Loading hw/core/qdev-properties.c +33 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,39 @@ PropertyInfo qdev_prop_bit = { .set = set_bit, }; /* --- bool --- */ static void get_bool(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; bool *ptr = qdev_get_prop_ptr(dev, prop); visit_type_bool(v, ptr, name, errp); } static void set_bool(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; bool *ptr = qdev_get_prop_ptr(dev, prop); if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } visit_type_bool(v, ptr, name, errp); } PropertyInfo qdev_prop_bool = { .name = "boolean", .get = get_bool, .set = set_bool, }; /* --- 8bit integer --- */ static void get_uint8(Object *obj, Visitor *v, void *opaque, Loading include/hw/qdev-properties.h +10 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ /*** qdev-properties.c ***/ extern PropertyInfo qdev_prop_bit; extern PropertyInfo qdev_prop_bool; extern PropertyInfo qdev_prop_uint8; extern PropertyInfo qdev_prop_uint16; extern PropertyInfo qdev_prop_uint32; Loading Loading @@ -52,6 +53,15 @@ extern PropertyInfo qdev_prop_arraylen; .defval = (bool)_defval, \ } #define DEFINE_PROP_BOOL(_name, _state, _field, _defval) { \ .name = (_name), \ .info = &(qdev_prop_bool), \ .offset = offsetof(_state, _field) \ + type_check(bool, typeof_field(_state, _field)), \ .qtype = QTYPE_QBOOL, \ .defval = (bool)_defval, \ } #define PROP_ARRAY_LEN_PREFIX "len-" /** Loading Loading
hw/core/qdev-properties.c +33 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,39 @@ PropertyInfo qdev_prop_bit = { .set = set_bit, }; /* --- bool --- */ static void get_bool(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; bool *ptr = qdev_get_prop_ptr(dev, prop); visit_type_bool(v, ptr, name, errp); } static void set_bool(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; bool *ptr = qdev_get_prop_ptr(dev, prop); if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } visit_type_bool(v, ptr, name, errp); } PropertyInfo qdev_prop_bool = { .name = "boolean", .get = get_bool, .set = set_bool, }; /* --- 8bit integer --- */ static void get_uint8(Object *obj, Visitor *v, void *opaque, Loading
include/hw/qdev-properties.h +10 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ /*** qdev-properties.c ***/ extern PropertyInfo qdev_prop_bit; extern PropertyInfo qdev_prop_bool; extern PropertyInfo qdev_prop_uint8; extern PropertyInfo qdev_prop_uint16; extern PropertyInfo qdev_prop_uint32; Loading Loading @@ -52,6 +53,15 @@ extern PropertyInfo qdev_prop_arraylen; .defval = (bool)_defval, \ } #define DEFINE_PROP_BOOL(_name, _state, _field, _defval) { \ .name = (_name), \ .info = &(qdev_prop_bool), \ .offset = offsetof(_state, _field) \ + type_check(bool, typeof_field(_state, _field)), \ .qtype = QTYPE_QBOOL, \ .defval = (bool)_defval, \ } #define PROP_ARRAY_LEN_PREFIX "len-" /** Loading