* [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 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.