[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 39/44] qdev: PROP_* macros
From: |
Eduardo Habkost |
Subject: |
[PATCH v2 39/44] qdev: PROP_* macros |
Date: |
Wed, 4 Nov 2020 11:00:16 -0500 |
The new helper macros are just wrappers to DEFINE_PROP_* that can
be used directly as arguments to object_class_property_add_field().
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
This is a new patch added in v2 of the series
---
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org
---
include/hw/qdev-properties.h | 54 ++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 0a44a91e6e..89c820eeb7 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -173,6 +173,60 @@ extern const PropertyInfo prop_info_link;
#define DEFINE_PROP_END_OF_LIST() \
{}
+/*
+ * The PROP_* macros can be used as arguments for
+ * object_class_property_add_field(). They will evaluate to a
+ * pointer to a static variable.
+ */
+
+#define FIELD_PROP(def) \
+ ({ static Property _p = def; &p; })
+
+#define PROP_SIGNED(...) \
+ FIELD_PROP(DEFINE_PROP_SIGNED(NULL, __VA_ARGS__))
+#define PROP_SIGNED_NODEFAULT(...) \
+ FIELD_PROP(DEFINE_PROP_SIGNED_NODEFAULT(NULL, __VA_ARGS__))
+#define PROP_BIT(...) \
+ FIELD_PROP(DEFINE_PROP_BIT(NULL, __VA_ARGS__))
+#define PROP_UNSIGNED(...) \
+ FIELD_PROP(DEFINE_PROP_UNSIGNED(NULL, __VA_ARGS__))
+#define PROP_UNSIGNED_NODEFAULT(...) \
+ FIELD_PROP(DEFINE_PROP_UNSIGNED_NODEFAULT(NULL, __VA_ARGS__))
+#define PROP_BIT64(...) \
+ FIELD_PROP(DEFINE_PROP_BIT64(NULL, __VA_ARGS__))
+#define PROP_BOOL(...) \
+ FIELD_PROP(DEFINE_PROP_BOOL(NULL, __VA_ARGS__))
+#define PROP_ARRAY(...) \
+ FIELD_PROP(DEFINE_PROP_ARRAY(NULL, __VA_ARGS__))
+#define PROP_LINK(...) \
+ FIELD_PROP(DEFINE_PROP_LINK(NULL, __VA_ARGS__))
+#define PROP_UINT8(...) \
+ FIELD_PROP(DEFINE_PROP_UINT8(NULL, __VA_ARGS__))
+#define PROP_UINT16(...) \
+ FIELD_PROP(DEFINE_PROP_UINT16(NULL, __VA_ARGS__))
+#define PROP_UINT32(...) \
+ FIELD_PROP(DEFINE_PROP_UINT32(NULL, __VA_ARGS__))
+#define PROP_INT32(...) \
+ FIELD_PROP(DEFINE_PROP_INT32(NULL, __VA_ARGS__))
+#define PROP_UINT64(...) \
+ FIELD_PROP(DEFINE_PROP_UINT64(NULL, __VA_ARGS__))
+#define PROP_INT64(...) \
+ FIELD_PROP(DEFINE_PROP_INT64(NULL, __VA_ARGS__))
+#define PROP_SIZE(...) \
+ FIELD_PROP(DEFINE_PROP_SIZE(NULL, __VA_ARGS__))
+#define PROP_STRING(...) \
+ FIELD_PROP(DEFINE_PROP_STRING(NULL, __VA_ARGS__))
+#define PROP_ON_OFF_AUTO(...) \
+ FIELD_PROP(DEFINE_PROP_ON_OFF_AUTO(NULL, __VA_ARGS__))
+#define PROP_SIZE32(...) \
+ FIELD_PROP(DEFINE_PROP_SIZE32(NULL, __VA_ARGS__))
+#define PROP_UUID(...) \
+ FIELD_PROP(DEFINE_PROP_UUID(NULL, __VA_ARGS__))
+#define PROP_UUID_NODEFAULT(...) \
+ FIELD_PROP(DEFINE_PROP_UUID_NODEFAULT(NULL, __VA_ARGS__))
+#define PROP_END_OF_LIST(...) \
+ FIELD_PROP(DEFINE_PROP_END_OF_LIST(NULL, __VA_ARGS__))
+
/**
* object_class_property_add_field: Add a field property to object class
* @oc: object class
--
2.28.0
- [PATCH v2 20/44] qdev: Add name argument to PropertyInfo.create method, (continued)
- [PATCH v2 20/44] qdev: Add name argument to PropertyInfo.create method, Eduardo Habkost, 2020/11/04
- [PATCH v2 10/44] qdev: Make qdev_find_global_prop() get Object* argument, Eduardo Habkost, 2020/11/04
- [PATCH v2 13/44] qdev: Move UUID property to qdev-properties-system.c, Eduardo Habkost, 2020/11/04
- [PATCH v2 11/44] qdev: Make check_prop_still_unset() get Object* argument, Eduardo Habkost, 2020/11/04
- [PATCH v2 16/44] sparc: Use DEFINE_PROP for nwindows property, Eduardo Habkost, 2020/11/04
- [PATCH v2 17/44] qdev: Get just property name at error_set_from_qdev_prop_error(), Eduardo Habkost, 2020/11/04
- [PATCH v2 12/44] qdev: Make error_set_from_qdev_prop_error() get Object* argument, Eduardo Habkost, 2020/11/04
- [PATCH v2 21/44] qdev: Wrap getters and setters in separate helpers, Eduardo Habkost, 2020/11/04
- [PATCH v2 15/44] qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros, Eduardo Habkost, 2020/11/04
- [PATCH v2 28/44] qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen(), Eduardo Habkost, 2020/11/04
- [PATCH v2 39/44] qdev: PROP_* macros,
Eduardo Habkost <=
- [PATCH v2 32/44] qom: Add allow_set callback to ObjectProperty, Eduardo Habkost, 2020/11/04
- [PATCH v2 31/44] qdev: Reuse object_property_add_field() when adding array elements, Eduardo Habkost, 2020/11/04
- [PATCH v2 18/44] qdev: Avoid using prop->name unnecessarily, Eduardo Habkost, 2020/11/04
- [PATCH v2 22/44] qdev: Move dev->realized check to qdev_property_set(), Eduardo Habkost, 2020/11/04
- [PATCH v2 27/44] qdev: Don't set qdev_prop_name for array elements, Eduardo Habkost, 2020/11/04
- [PATCH v2 29/44] qdev: Remove ArrayElementProperty.propname field, Eduardo Habkost, 2020/11/04
- [PATCH v2 40/44] qdev: Move core field property code to QOM, Eduardo Habkost, 2020/11/04
- [PATCH v2 23/44] qdev: Make PropertyInfo.create return ObjectProperty*, Eduardo Habkost, 2020/11/04