> > +#define DEFINE_PROP_UNSIGNED_DEPRECATED(_name, _state, _field, \
> > + _defval, _prop, _type) \
> > + DEFINE_PROP(_name, _state, _field, _prop, _type, \
> > + .set_default = true, \
> > + .defval.u = (_type)_defval, \
> > + .flags = OBJECT_PROPERTY_DEPRECATED)
> > +
> > #define DEFINE_PROP_UNSIGNED_NODEFAULT(_name, _state, _field, _prop,
> > _type) \
>
> adding flags to the end of the names, basicaly spawns a lot of vartions of
> the same macro,
>
> perhaps it's time to just add flags field and consoladate existing 'flag
> named' variants,
> the one won't need to introduce DEFINE_PROP_UNSIGNED_DEPRECATED at all,
> just use appropriate flag(s) when decaring property.
Good idea, what about this?
-#define DEFINE_PROP_UNSIGNED(_name, _state, _field, _defval, _prop, _type) \
- DEFINE_PROP(_name, _state, _field, _prop, _type, \
- .set_default = true, \
- .defval.u = (_type)_defval)
+#define DEFINE_PROP_UNSIGNED(_name, _state, _field, _defval, _prop, _type,
...) \
+ DEFINE_PROP(_name, _state, _field, _prop, _type,
\
+ .set_default = true,
\
+ .defval.u = (_type)_defval,
\
+ ##__VA_ARGS__)
...
-#define DEFINE_PROP_UINT8(_n, _s, _f, _d) \
- DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_uint8, uint8_t)
+#define DEFINE_PROP_UINT8(_n, _s, _f, _d, ...) \
+ DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_uint8, uint8_t,
##__VA_ARGS__)
Then we can mark a property as deprecated by:
DEFINE_PROP_UINT8("version", IOAPICCommonState, version, IOAPIC_VER_DEF,
.flags = OBJECT_PROPERTY_DEPRECATED),
Regards,
Zhao