mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
qdev-properties: Add a new macro with bitmask check for uint64_t property
The DEFINE_PROP_UINT64_CHECKMASK maro applies certain mask check agaist user-supplied property value, reject the value if it violates the bitmask. Co-developed-by: Like Xu <like.xu@linux.intel.com> Signed-off-by: Like Xu <like.xu@linux.intel.com> Signed-off-by: Yang Weijiang <weijiang.yang@intel.com> Message-Id: <20220215195258.29149-2-weijiang.yang@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6df39f5e58
commit
18c22d7112
2 changed files with 31 additions and 0 deletions
|
@ -428,6 +428,25 @@ const PropertyInfo qdev_prop_int64 = {
|
|||
.set_default_value = qdev_propinfo_set_default_value_int,
|
||||
};
|
||||
|
||||
static void set_uint64_checkmask(Object *obj, Visitor *v, const char *name,
|
||||
void *opaque, Error **errp)
|
||||
{
|
||||
Property *prop = opaque;
|
||||
uint64_t *ptr = object_field_prop_ptr(obj, prop);
|
||||
|
||||
visit_type_uint64(v, name, ptr, errp);
|
||||
if (*ptr & ~prop->bitmask) {
|
||||
error_setg(errp, "Property value for '%s' has bits outside mask '0x%" PRIx64 "'",
|
||||
name, prop->bitmask);
|
||||
}
|
||||
}
|
||||
|
||||
const PropertyInfo qdev_prop_uint64_checkmask = {
|
||||
.name = "uint64",
|
||||
.get = get_uint64,
|
||||
.set = set_uint64_checkmask,
|
||||
};
|
||||
|
||||
/* --- string --- */
|
||||
|
||||
static void release_string(Object *obj, const char *name, void *opaque)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue