qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties
@ 2013-09-22  7:16 Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 1/4] qemu: add Error to typedefs Michael S. Tsirkin
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2013-09-22  7:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony, pbonzini, afaerber, stefanha

Add helper functions for adding read-only properties, that work in the
case where the value is in memory.

Michael S. Tsirkin (4):
  qemu: add Error to typedefs
  qom: pull in qemu/typedefs
  qom: cleanup struct Error references
  qom: add pointer to int property helpers

 include/qemu/typedefs.h |  1 +
 include/qom/object.h    | 73 +++++++++++++++++++++++++++++++------------------
 qom/object.c            | 56 +++++++++++++++++++++++++++++++++++++
 3 files changed, 104 insertions(+), 26 deletions(-)

-- 
MST

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

* [Qemu-devel] [PATCH 1/4] qemu: add Error to typedefs
  2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
@ 2013-09-22  7:16 ` Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 2/4] qom: pull in qemu/typedefs Michael S. Tsirkin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2013-09-22  7:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony, pbonzini, afaerber, stefanha

This is so qom headers can use it without pulling in
extra headers.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qemu/typedefs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index c5c6e36..bb5acf9 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -9,6 +9,7 @@ typedef struct QEMUFile QEMUFile;
 typedef struct QEMUBH QEMUBH;
 typedef struct QInt QInt;
 typedef struct QObject QObject;
+typedef struct Error Error;
 
 typedef struct AioContext AioContext;
 
-- 
MST

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

* [Qemu-devel] [PATCH 2/4] qom: pull in qemu/typedefs
  2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 1/4] qemu: add Error to typedefs Michael S. Tsirkin
@ 2013-09-22  7:16 ` Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 3/4] qom: cleanup struct Error references Michael S. Tsirkin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2013-09-22  7:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony, pbonzini, afaerber, stefanha

As usual so we can use typedefs without header dependencies.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qom/object.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/qom/object.h b/include/qom/object.h
index 1a7b71a..5b3b743 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -17,6 +17,7 @@
 #include <glib.h>
 #include <stdint.h>
 #include <stdbool.h>
+#include "qemu/typedefs.h"
 #include "qemu/queue.h"
 
 struct Visitor;
-- 
MST

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

* [Qemu-devel] [PATCH 3/4] qom: cleanup struct Error references
  2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 1/4] qemu: add Error to typedefs Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 2/4] qom: pull in qemu/typedefs Michael S. Tsirkin
@ 2013-09-22  7:16 ` Michael S. Tsirkin
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 4/4] qom: add pointer to int property helpers Michael S. Tsirkin
  2013-09-23 10:41 ` [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Paolo Bonzini
  4 siblings, 0 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2013-09-22  7:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony, pbonzini, afaerber, stefanha

now that a typedef for struct Error is available,
use it in qom/object.h to match coding style rules.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qom/object.h | 51 +++++++++++++++++++++++++--------------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 5b3b743..e3a16e4 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -21,7 +21,6 @@
 #include "qemu/queue.h"
 
 struct Visitor;
-struct Error;
 
 struct TypeImpl;
 typedef struct TypeImpl *Type;
@@ -302,7 +301,7 @@ typedef void (ObjectPropertyAccessor)(Object *obj,
                                       struct Visitor *v,
                                       void *opaque,
                                       const char *name,
-                                      struct Error **errp);
+                                      Error **errp);
 
 /**
  * ObjectPropertyRelease:
@@ -791,9 +790,9 @@ void object_property_add(Object *obj, const char *name, const char *type,
                          ObjectPropertyAccessor *get,
                          ObjectPropertyAccessor *set,
                          ObjectPropertyRelease *release,
-                         void *opaque, struct Error **errp);
+                         void *opaque, Error **errp);
 
-void object_property_del(Object *obj, const char *name, struct Error **errp);
+void object_property_del(Object *obj, const char *name, Error **errp);
 
 /**
  * object_property_find:
@@ -804,7 +803,7 @@ void object_property_del(Object *obj, const char *name, struct Error **errp);
  * Look up a property for an object and return its #ObjectProperty if found.
  */
 ObjectProperty *object_property_find(Object *obj, const char *name,
-                                     struct Error **errp);
+                                     Error **errp);
 
 void object_unparent(Object *obj);
 
@@ -819,7 +818,7 @@ void object_unparent(Object *obj);
  * Reads a property from a object.
  */
 void object_property_get(Object *obj, struct Visitor *v, const char *name,
-                         struct Error **errp);
+                         Error **errp);
 
 /**
  * object_property_set_str:
@@ -830,7 +829,7 @@ void object_property_get(Object *obj, struct Visitor *v, const char *name,
  * Writes a string value to a property.
  */
 void object_property_set_str(Object *obj, const char *value,
-                             const char *name, struct Error **errp);
+                             const char *name, Error **errp);
 
 /**
  * object_property_get_str:
@@ -843,7 +842,7 @@ void object_property_set_str(Object *obj, const char *value,
  * The caller should free the string.
  */
 char *object_property_get_str(Object *obj, const char *name,
-                              struct Error **errp);
+                              Error **errp);
 
 /**
  * object_property_set_link:
@@ -854,7 +853,7 @@ char *object_property_get_str(Object *obj, const char *name,
  * Writes an object's canonical path to a property.
  */
 void object_property_set_link(Object *obj, Object *value,
-                              const char *name, struct Error **errp);
+                              const char *name, Error **errp);
 
 /**
  * object_property_get_link:
@@ -867,7 +866,7 @@ void object_property_set_link(Object *obj, Object *value,
  * string or not a valid object path).
  */
 Object *object_property_get_link(Object *obj, const char *name,
-                                 struct Error **errp);
+                                 Error **errp);
 
 /**
  * object_property_set_bool:
@@ -878,7 +877,7 @@ Object *object_property_get_link(Object *obj, const char *name,
  * Writes a bool value to a property.
  */
 void object_property_set_bool(Object *obj, bool value,
-                              const char *name, struct Error **errp);
+                              const char *name, Error **errp);
 
 /**
  * object_property_get_bool:
@@ -890,7 +889,7 @@ void object_property_set_bool(Object *obj, bool value,
  * an error occurs (including when the property value is not a bool).
  */
 bool object_property_get_bool(Object *obj, const char *name,
-                              struct Error **errp);
+                              Error **errp);
 
 /**
  * object_property_set_int:
@@ -901,7 +900,7 @@ bool object_property_get_bool(Object *obj, const char *name,
  * Writes an integer value to a property.
  */
 void object_property_set_int(Object *obj, int64_t value,
-                             const char *name, struct Error **errp);
+                             const char *name, Error **errp);
 
 /**
  * object_property_get_int:
@@ -913,7 +912,7 @@ void object_property_set_int(Object *obj, int64_t value,
  * an error occurs (including when the property value is not an integer).
  */
 int64_t object_property_get_int(Object *obj, const char *name,
-                                struct Error **errp);
+                                Error **errp);
 
 /**
  * object_property_set:
@@ -927,7 +926,7 @@ int64_t object_property_get_int(Object *obj, const char *name,
  * Writes a property to a object.
  */
 void object_property_set(Object *obj, struct Visitor *v, const char *name,
-                         struct Error **errp);
+                         Error **errp);
 
 /**
  * object_property_parse:
@@ -939,7 +938,7 @@ void object_property_set(Object *obj, struct Visitor *v, const char *name,
  * Parses a string and writes the result into a property of an object.
  */
 void object_property_parse(Object *obj, const char *string,
-                           const char *name, struct Error **errp);
+                           const char *name, Error **errp);
 
 /**
  * object_property_print:
@@ -951,7 +950,7 @@ void object_property_parse(Object *obj, const char *string,
  * caller shall free the string.
  */
 char *object_property_print(Object *obj, const char *name,
-                            struct Error **errp);
+                            Error **errp);
 
 /**
  * object_property_get_type:
@@ -962,7 +961,7 @@ char *object_property_print(Object *obj, const char *name,
  * Returns:  The type name of the property.
  */
 const char *object_property_get_type(Object *obj, const char *name,
-                                     struct Error **errp);
+                                     Error **errp);
 
 /**
  * object_get_root:
@@ -1055,7 +1054,7 @@ Object *object_resolve_path_component(Object *parent, const gchar *part);
  * The child object itself can be retrieved using object_property_get_link().
  */
 void object_property_add_child(Object *obj, const char *name,
-                               Object *child, struct Error **errp);
+                               Object *child, Error **errp);
 
 /**
  * object_property_add_link:
@@ -1078,7 +1077,7 @@ void object_property_add_child(Object *obj, const char *name,
  */
 void object_property_add_link(Object *obj, const char *name,
                               const char *type, Object **child,
-                              struct Error **errp);
+                              Error **errp);
 
 /**
  * object_property_add_str:
@@ -1093,9 +1092,9 @@ void object_property_add_link(Object *obj, const char *name,
  * property of type 'string'.
  */
 void object_property_add_str(Object *obj, const char *name,
-                             char *(*get)(Object *, struct Error **),
-                             void (*set)(Object *, const char *, struct Error **),
-                             struct Error **errp);
+                             char *(*get)(Object *, Error **),
+                             void (*set)(Object *, const char *, Error **),
+                             Error **errp);
 
 /**
  * object_property_add_bool:
@@ -1109,9 +1108,9 @@ void object_property_add_str(Object *obj, const char *name,
  * property of type 'bool'.
  */
 void object_property_add_bool(Object *obj, const char *name,
-                              bool (*get)(Object *, struct Error **),
-                              void (*set)(Object *, bool, struct Error **),
-                              struct Error **errp);
+                              bool (*get)(Object *, Error **),
+                              void (*set)(Object *, bool, Error **),
+                              Error **errp);
 
 /**
  * object_child_foreach:
-- 
MST

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

* [Qemu-devel] [PATCH 4/4] qom: add pointer to int property helpers
  2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
                   ` (2 preceding siblings ...)
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 3/4] qom: cleanup struct Error references Michael S. Tsirkin
@ 2013-09-22  7:16 ` Michael S. Tsirkin
  2013-09-23 10:41 ` [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Paolo Bonzini
  4 siblings, 0 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2013-09-22  7:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony, pbonzini, afaerber, stefanha

Make it easy to add read-only helpers for simple
integer properties in memory.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/qom/object.h | 21 ++++++++++++++++++++
 qom/object.c         | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 77 insertions(+)

diff --git a/include/qom/object.h b/include/qom/object.h
index e3a16e4..3b75f5a 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -795,6 +795,27 @@ void object_property_add(Object *obj, const char *name, const char *type,
 void object_property_del(Object *obj, const char *name, Error **errp);
 
 /**
+ * object_property_add_uint8_ptr:
+ * object_property_add_uint16_ptr:
+ * object_property_add_uint32_ptr:
+ * object_property_add_uint64_ptr:
+ * @obj: the object to add a property to
+ * @name: the name of the property
+ * @v: pointer to value
+ *
+ * Add an integer property in memory.  This function will add a
+ * property of the appropriate type.
+ */
+void object_property_add_uint8_ptr(Object *obj, const char *name,
+                                   const uint8_t *v, Error **errp);
+void object_property_add_uint16_ptr(Object *obj, const char *name,
+                                    const uint16_t *v, Error **errp);
+void object_property_add_uint32_ptr(Object *obj, const char *name,
+                                    const uint32_t *v, Error **errp);
+void object_property_add_uint64_ptr(Object *obj, const char *name,
+                                    const uint64_t *v, Error **Errp);
+
+/**
  * object_property_find:
  * @obj: the object
  * @name: the name of the property
diff --git a/qom/object.c b/qom/object.c
index e90e382..b929dc6 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1344,6 +1344,62 @@ static char *qdev_get_type(Object *obj, Error **errp)
     return g_strdup(object_get_typename(obj));
 }
 
+static void property_get_uint8_ptr(Object *obj, Visitor *v,
+                                   void *opaque, const char *name,
+                                   Error **errp)
+{
+    visit_type_uint8(v, opaque, name, errp);
+}
+
+static void property_get_uint16_ptr(Object *obj, Visitor *v,
+                                   void *opaque, const char *name,
+                                   Error **errp)
+{
+    visit_type_uint16(v, opaque, name, errp);
+}
+
+static void property_get_uint32_ptr(Object *obj, Visitor *v,
+                                   void *opaque, const char *name,
+                                   Error **errp)
+{
+    visit_type_uint32(v, opaque, name, errp);
+}
+
+static void property_get_uint64_ptr(Object *obj, Visitor *v,
+                                   void *opaque, const char *name,
+                                   Error **errp)
+{
+    visit_type_uint64(v, opaque, name, errp);
+}
+
+void object_property_add_uint8_ptr(Object *obj, const char *name,
+                                   const uint8_t *v, Error **errp)
+{
+    object_property_add(obj, name, "uint8", property_get_uint8_ptr,
+                        NULL, NULL, (void *)v, errp);
+}
+
+void object_property_add_uint16_ptr(Object *obj, const char *name,
+                                    const uint16_t *v, Error **errp)
+{
+    object_property_add(obj, name, "uint16", property_get_uint16_ptr,
+                        NULL, NULL, (void *)v, errp);
+}
+
+void object_property_add_uint32_ptr(Object *obj, const char *name,
+                                    const uint32_t *v, Error **errp)
+{
+    object_property_add(obj, name, "uint32", property_get_uint32_ptr,
+                        NULL, NULL, (void *)v, errp);
+}
+
+void object_property_add_uint64_ptr(Object *obj, const char *name,
+                                    const uint64_t *v, Error **errp)
+{
+    object_property_add(obj, name, "uint64", property_get_uint64_ptr,
+                        NULL, NULL, (void *)v, errp);
+}
+
 static void object_instance_init(Object *obj)
 {
     object_property_add_str(obj, "type", qdev_get_type, NULL, NULL);
-- 
MST

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

* Re: [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties
  2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
                   ` (3 preceding siblings ...)
  2013-09-22  7:16 ` [Qemu-devel] [PATCH 4/4] qom: add pointer to int property helpers Michael S. Tsirkin
@ 2013-09-23 10:41 ` Paolo Bonzini
  4 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2013-09-23 10:41 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: anthony, qemu-devel, stefanha, afaerber

Il 22/09/2013 09:16, Michael S. Tsirkin ha scritto:
> Add helper functions for adding read-only properties, that work in the
> case where the value is in memory.
> 
> Michael S. Tsirkin (4):
>   qemu: add Error to typedefs
>   qom: pull in qemu/typedefs
>   qom: cleanup struct Error references
>   qom: add pointer to int property helpers
> 
>  include/qemu/typedefs.h |  1 +
>  include/qom/object.h    | 73 +++++++++++++++++++++++++++++++------------------
>  qom/object.c            | 56 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 104 insertions(+), 26 deletions(-)
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

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

end of thread, other threads:[~2013-09-23 10:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-22  7:16 [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Michael S. Tsirkin
2013-09-22  7:16 ` [Qemu-devel] [PATCH 1/4] qemu: add Error to typedefs Michael S. Tsirkin
2013-09-22  7:16 ` [Qemu-devel] [PATCH 2/4] qom: pull in qemu/typedefs Michael S. Tsirkin
2013-09-22  7:16 ` [Qemu-devel] [PATCH 3/4] qom: cleanup struct Error references Michael S. Tsirkin
2013-09-22  7:16 ` [Qemu-devel] [PATCH 4/4] qom: add pointer to int property helpers Michael S. Tsirkin
2013-09-23 10:41 ` [Qemu-devel] [PATCH 0/4] qom: add helpers for integer properties Paolo Bonzini

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).