|
@@ -17,6 +17,7 @@ struct Property {
|
|
const PropertyInfo *info;
|
|
const PropertyInfo *info;
|
|
ptrdiff_t offset;
|
|
ptrdiff_t offset;
|
|
uint8_t bitnr;
|
|
uint8_t bitnr;
|
|
|
|
+ uint64_t bitmask;
|
|
bool set_default;
|
|
bool set_default;
|
|
union {
|
|
union {
|
|
int64_t i;
|
|
int64_t i;
|
|
@@ -54,6 +55,7 @@ extern const PropertyInfo qdev_prop_uint16;
|
|
extern const PropertyInfo qdev_prop_uint32;
|
|
extern const PropertyInfo qdev_prop_uint32;
|
|
extern const PropertyInfo qdev_prop_int32;
|
|
extern const PropertyInfo qdev_prop_int32;
|
|
extern const PropertyInfo qdev_prop_uint64;
|
|
extern const PropertyInfo qdev_prop_uint64;
|
|
|
|
+extern const PropertyInfo qdev_prop_uint64_checkmask;
|
|
extern const PropertyInfo qdev_prop_int64;
|
|
extern const PropertyInfo qdev_prop_int64;
|
|
extern const PropertyInfo qdev_prop_size;
|
|
extern const PropertyInfo qdev_prop_size;
|
|
extern const PropertyInfo qdev_prop_string;
|
|
extern const PropertyInfo qdev_prop_string;
|
|
@@ -103,6 +105,16 @@ extern const PropertyInfo qdev_prop_link;
|
|
.set_default = true, \
|
|
.set_default = true, \
|
|
.defval.u = (bool)_defval)
|
|
.defval.u = (bool)_defval)
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * The DEFINE_PROP_UINT64_CHECKMASK macro checks a user-supplied value
|
|
|
|
+ * against corresponding bitmask, rejects the value if it violates.
|
|
|
|
+ * The default value is set in instance_init().
|
|
|
|
+ */
|
|
|
|
+#define DEFINE_PROP_UINT64_CHECKMASK(_name, _state, _field, _bitmask) \
|
|
|
|
+ DEFINE_PROP(_name, _state, _field, qdev_prop_uint64_checkmask, uint64_t, \
|
|
|
|
+ .bitmask = (_bitmask), \
|
|
|
|
+ .set_default = false)
|
|
|
|
+
|
|
#define PROP_ARRAY_LEN_PREFIX "len-"
|
|
#define PROP_ARRAY_LEN_PREFIX "len-"
|
|
|
|
|
|
/**
|
|
/**
|