[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/3] qdev: provide DEFINE_PROP_INT64()
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 1/3] qdev: provide DEFINE_PROP_INT64() |
Date: |
Thu, 13 Jul 2017 16:05:32 +0000 |
Hi
On Wed, Jul 12, 2017 at 8:55 AM Peter Xu <address@hidden> wrote:
> We have merely all the stuff, but this one is missing. Add it in.
>
> Am going to use this new helper for MigrationParameters fields, since
> most of them are int64_t.
>
> CC: Markus Armbruster <address@hidden>
> CC: Eduardo Habkost <address@hidden>
> CC: "Marc-André Lureau" <address@hidden>
> CC: Peter Xu <address@hidden>
> CC: Juan Quintela <address@hidden>
> CC: Marcel Apfelbaum <address@hidden>
> Signed-off-by: Peter Xu <address@hidden>
> ---
> hw/core/qdev-properties.c | 32 ++++++++++++++++++++++++++++++++
> include/hw/qdev-properties.h | 3 +++
> 2 files changed, 35 insertions(+)
>
> diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
> index f11d578..70e14df 100644
> --- a/hw/core/qdev-properties.c
> +++ b/hw/core/qdev-properties.c
> @@ -403,6 +403,31 @@ static void set_uint64(Object *obj, Visitor *v, const
> char *name,
> visit_type_uint64(v, name, ptr, errp);
> }
>
> +static void get_int64(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + DeviceState *dev = DEVICE(obj);
> + Property *prop = opaque;
> + int64_t *ptr = qdev_get_prop_ptr(dev, prop);
> +
> + visit_type_int64(v, name, ptr, errp);
> +}
> +
> +static void set_int64(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + DeviceState *dev = DEVICE(obj);
> + Property *prop = opaque;
> + int64_t *ptr = qdev_get_prop_ptr(dev, prop);
> +
> + if (dev->realized) {
> + qdev_prop_set_after_realize(dev, name, errp);
> + return;
> + }
> +
> + visit_type_int64(v, name, ptr, errp);
> +}
> +
> PropertyInfo qdev_prop_uint64 = {
> .name = "uint64",
> .get = get_uint64,
> @@ -410,6 +435,13 @@ PropertyInfo qdev_prop_uint64 = {
> .set_default_value = set_default_value_uint,
> };
>
> +PropertyInfo qdev_prop_int64 = {
> + .name = "int64",
> + .get = get_int64,
> + .set = set_int64,
> + .set_default_value = set_default_value_int,
> +};
> +
> /* --- string --- */
>
> static void release_string(Object *obj, const char *name, void *opaque)
> diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
> index 0604c33..2939614 100644
> --- a/include/hw/qdev-properties.h
> +++ b/include/hw/qdev-properties.h
> @@ -13,6 +13,7 @@ extern PropertyInfo qdev_prop_uint16;
> extern PropertyInfo qdev_prop_uint32;
> extern PropertyInfo qdev_prop_int32;
> extern PropertyInfo qdev_prop_uint64;
> +extern PropertyInfo qdev_prop_int64;
> extern PropertyInfo qdev_prop_size;
> extern PropertyInfo qdev_prop_string;
> extern PropertyInfo qdev_prop_chr;
> @@ -127,6 +128,8 @@ extern PropertyInfo qdev_prop_arraylen;
> DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_int32, int32_t)
> #define DEFINE_PROP_UINT64(_n, _s, _f, _d) \
> DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_uint64, uint64_t)
> +#define DEFINE_PROP_INT64(_n, _s, _f, _d) \
> + DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_int64, int64_t)
>
Make it SIGNED, with that:
Reviewed-by: Marc-André Lureau <address@hidden>
> #define DEFINE_PROP_SIZE(_n, _s, _f, _d) \
> DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_size, uint64_t)
> #define DEFINE_PROP_PCI_DEVFN(_n, _s, _f, _d) \
> --
> 2.7.4
>
>
> --
Marc-André Lureau