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