From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sd1Dq-0004sW-9d for qemu-devel@nongnu.org; Fri, 08 Jun 2012 11:35:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sd1Dl-0005Ro-Cp for qemu-devel@nongnu.org; Fri, 08 Jun 2012 11:35:33 -0400 Received: from cantor2.suse.de ([195.135.220.15]:55351 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sd1Dk-0005RS-Sz for qemu-devel@nongnu.org; Fri, 08 Jun 2012 11:35:29 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Fri, 8 Jun 2012 17:35:11 +0200 Message-Id: <1339169713-31205-7-git-send-email-afaerber@suse.de> In-Reply-To: <1339169713-31205-1-git-send-email-afaerber@suse.de> References: <1339169713-31205-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 6/8] qdev: Switch property accessors to fixed-width visitor interfaces List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Michael Roth , Anthony Liguori , =?UTF-8?q?Andreas=20F=C3=A4rber?= From: Michael Roth This introduces {get,set}_uint{8,16,32,64}() functions for the respective qdev types. TADDR and VLAN are switched to explicit int64, BLOCKSIZE to uint16. Signed-off-by: Michael Roth Signed-off-by: Paolo Bonzini Signed-off-by: Andreas F=C3=A4rber --- hw/qdev-addr.c | 4 +- hw/qdev-properties.c | 150 +++++++++++++++++++++++++++++---------------= ----- 2 files changed, 91 insertions(+), 63 deletions(-) diff --git a/hw/qdev-addr.c b/hw/qdev-addr.c index 0bb16c7..b711b6b 100644 --- a/hw/qdev-addr.c +++ b/hw/qdev-addr.c @@ -27,7 +27,7 @@ static void get_taddr(Object *obj, Visitor *v, void *op= aque, int64_t value; =20 value =3D *ptr; - visit_type_int(v, &value, name, errp); + visit_type_int64(v, &value, name, errp); } =20 static void set_taddr(Object *obj, Visitor *v, void *opaque, @@ -44,7 +44,7 @@ static void set_taddr(Object *obj, Visitor *v, void *op= aque, return; } =20 - visit_type_int(v, &value, name, &local_err); + visit_type_int64(v, &value, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c index d109f89..553b0d1 100644 --- a/hw/qdev-properties.c +++ b/hw/qdev-properties.c @@ -76,33 +76,30 @@ PropertyInfo qdev_prop_bit =3D { =20 /* --- 8bit integer --- */ =20 -static void get_int8(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void get_uint8(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int8_t *ptr =3D qdev_get_prop_ptr(dev, prop); - int64_t value; + uint8_t *ptr =3D qdev_get_prop_ptr(dev, prop); =20 - value =3D *ptr; - visit_type_int(v, &value, name, errp); + visit_type_uint8(v, ptr, name, errp); } =20 -static void set_int8(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void set_uint8(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int8_t *ptr =3D qdev_get_prop_ptr(dev, prop); + uint8_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); Error *local_err =3D NULL; - int64_t value; =20 if (dev->state !=3D DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } =20 - visit_type_int(v, &value, name, &local_err); + visit_type_uint8(v, &value, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; @@ -111,15 +108,15 @@ static void set_int8(Object *obj, Visitor *v, void = *opaque, *ptr =3D value; } else { error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, - dev->id?:"", name, value, prop->info->min, + dev->id?:"", name, (int64_t)value, prop->info->min, prop->info->max); } } =20 PropertyInfo qdev_prop_uint8 =3D { .name =3D "uint8", - .get =3D get_int8, - .set =3D set_int8, + .get =3D get_uint8, + .set =3D set_uint8, .min =3D 0, .max =3D 255, }; @@ -154,41 +151,38 @@ PropertyInfo qdev_prop_hex8 =3D { .legacy_name =3D "hex8", .parse =3D parse_hex8, .print =3D print_hex8, - .get =3D get_int8, - .set =3D set_int8, + .get =3D get_uint8, + .set =3D set_uint8, .min =3D 0, .max =3D 255, }; =20 /* --- 16bit integer --- */ =20 -static void get_int16(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void get_uint16(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int16_t *ptr =3D qdev_get_prop_ptr(dev, prop); - int64_t value; + uint16_t *ptr =3D qdev_get_prop_ptr(dev, prop); =20 - value =3D *ptr; - visit_type_int(v, &value, name, errp); + visit_type_uint16(v, ptr, name, errp); } =20 -static void set_int16(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void set_uint16(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int16_t *ptr =3D qdev_get_prop_ptr(dev, prop); + uint16_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); Error *local_err =3D NULL; - int64_t value; =20 if (dev->state !=3D DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } =20 - visit_type_int(v, &value, name, &local_err); + visit_type_uint16(v, &value, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; @@ -197,31 +191,67 @@ static void set_int16(Object *obj, Visitor *v, void= *opaque, *ptr =3D value; } else { error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, - dev->id?:"", name, value, prop->info->min, + dev->id?:"", name, (int64_t)value, prop->info->min, prop->info->max); } } =20 PropertyInfo qdev_prop_uint16 =3D { .name =3D "uint16", - .get =3D get_int16, - .set =3D set_int16, + .get =3D get_uint16, + .set =3D set_uint16, .min =3D 0, .max =3D 65535, }; =20 /* --- 32bit integer --- */ =20 +static void get_uint32(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) +{ + DeviceState *dev =3D DEVICE(obj); + Property *prop =3D opaque; + uint32_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); + + value =3D *ptr; + visit_type_uint32(v, &value, name, errp); +} + +static void set_uint32(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) +{ + DeviceState *dev =3D DEVICE(obj); + Property *prop =3D opaque; + uint32_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); + Error *local_err =3D NULL; + + if (dev->state !=3D DEV_STATE_CREATED) { + error_set(errp, QERR_PERMISSION_DENIED); + return; + } + + visit_type_uint32(v, &value, name, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + if (value >=3D prop->info->min && value <=3D prop->info->max) { + *ptr =3D value; + } else { + error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, + dev->id?:"", name, (int64_t)value, prop->info->min, + prop->info->max); + } +} + static void get_int32(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; int32_t *ptr =3D qdev_get_prop_ptr(dev, prop); - int64_t value; =20 - value =3D *ptr; - visit_type_int(v, &value, name, errp); + visit_type_int32(v, ptr, name, errp); } =20 static void set_int32(Object *obj, Visitor *v, void *opaque, @@ -229,16 +259,15 @@ static void set_int32(Object *obj, Visitor *v, void= *opaque, { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int32_t *ptr =3D qdev_get_prop_ptr(dev, prop); + int32_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); Error *local_err =3D NULL; - int64_t value; =20 if (dev->state !=3D DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } =20 - visit_type_int(v, &value, name, &local_err); + visit_type_int32(v, &value, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; @@ -247,15 +276,15 @@ static void set_int32(Object *obj, Visitor *v, void= *opaque, *ptr =3D value; } else { error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, - dev->id?:"", name, value, prop->info->min, + dev->id?:"", name, (int64_t)value, prop->info->min, prop->info->max); } } =20 PropertyInfo qdev_prop_uint32 =3D { .name =3D "uint32", - .get =3D get_int32, - .set =3D set_int32, + .get =3D get_uint32, + .set =3D set_uint32, .min =3D 0, .max =3D 0xFFFFFFFFULL, }; @@ -298,43 +327,43 @@ PropertyInfo qdev_prop_hex32 =3D { .legacy_name =3D "hex32", .parse =3D parse_hex32, .print =3D print_hex32, - .get =3D get_int32, - .set =3D set_int32, + .get =3D get_uint32, + .set =3D set_uint32, .min =3D 0, .max =3D 0xFFFFFFFFULL, }; =20 /* --- 64bit integer --- */ =20 -static void get_int64(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void get_uint64(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int64_t *ptr =3D qdev_get_prop_ptr(dev, prop); + uint64_t *ptr =3D qdev_get_prop_ptr(dev, prop); =20 - visit_type_int(v, ptr, name, errp); + visit_type_uint64(v, ptr, name, errp); } =20 -static void set_int64(Object *obj, Visitor *v, void *opaque, - const char *name, Error **errp) +static void set_uint64(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int64_t *ptr =3D qdev_get_prop_ptr(dev, prop); + uint64_t *ptr =3D qdev_get_prop_ptr(dev, prop); =20 if (dev->state !=3D DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } =20 - visit_type_int(v, ptr, name, errp); + visit_type_uint64(v, ptr, name, errp); } =20 PropertyInfo qdev_prop_uint64 =3D { .name =3D "uint64", - .get =3D get_int64, - .set =3D set_int64, + .get =3D get_uint64, + .set =3D set_uint64, }; =20 /* --- 64bit hex value --- */ @@ -367,8 +396,8 @@ PropertyInfo qdev_prop_hex64 =3D { .legacy_name =3D "hex64", .parse =3D parse_hex64, .print =3D print_hex64, - .get =3D get_int64, - .set =3D set_int64, + .get =3D get_uint64, + .set =3D set_uint64, }; =20 /* --- string --- */ @@ -645,7 +674,7 @@ static void get_vlan(Object *obj, Visitor *v, void *o= paque, int64_t id; =20 id =3D *ptr ? (*ptr)->id : -1; - visit_type_int(v, &id, name, errp); + visit_type_int64(v, &id, name, errp); } =20 static void set_vlan(Object *obj, Visitor *v, void *opaque, @@ -663,7 +692,7 @@ static void set_vlan(Object *obj, Visitor *v, void *o= paque, return; } =20 - visit_type_int(v, &id, name, &local_err); + visit_type_int64(v, &id, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; @@ -886,23 +915,22 @@ static void set_blocksize(Object *obj, Visitor *v, = void *opaque, { DeviceState *dev =3D DEVICE(obj); Property *prop =3D opaque; - int16_t *ptr =3D qdev_get_prop_ptr(dev, prop); + uint16_t value, *ptr =3D qdev_get_prop_ptr(dev, prop); Error *local_err =3D NULL; - int64_t value; =20 if (dev->state !=3D DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } =20 - visit_type_int(v, &value, name, &local_err); + visit_type_uint16(v, &value, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; } if (value < prop->info->min || value > prop->info->max) { error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, - dev->id?:"", name, value, prop->info->min, + dev->id?:"", name, (int64_t)value, prop->info->min, prop->info->max); return; } @@ -910,7 +938,7 @@ static void set_blocksize(Object *obj, Visitor *v, vo= id *opaque, /* We rely on power-of-2 blocksizes for bitmasks */ if ((value & (value - 1)) !=3D 0) { error_set(errp, QERR_PROPERTY_VALUE_NOT_POWER_OF_2, - dev->id?:"", name, value); + dev->id?:"", name, (int64_t)value); return; } =20 @@ -919,7 +947,7 @@ static void set_blocksize(Object *obj, Visitor *v, vo= id *opaque, =20 PropertyInfo qdev_prop_blocksize =3D { .name =3D "blocksize", - .get =3D get_int16, + .get =3D get_uint16, .set =3D set_blocksize, .min =3D 512, .max =3D 65024, --=20 1.7.7