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 <armbru@redhat.com>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Marc-André Lureau" <marcandre.lureau@redhat.com>
CC: Peter Xu <peterx@redhat.com>
CC: Juan Quintela <quintela@redhat.com>
CC: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
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)
#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
Hi
On Wed, Jul 12, 2017 at 8:55 AM Peter Xu <peterx@redhat.com> 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 <armbru@redhat.com>
> CC: Eduardo Habkost <ehabkost@redhat.com>
> CC: "Marc-André Lureau" <marcandre.lureau@redhat.com>
> CC: Peter Xu <peterx@redhat.com>
> CC: Juan Quintela <quintela@redhat.com>
> CC: Marcel Apfelbaum <marcel@redhat.com>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> 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 <marcandre.lureau@redhat.com>
> #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
On Thu, Jul 13, 2017 at 04:05:32PM +0000, Marc-André Lureau wrote: [...] > > 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: Oops, definitely. > > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Thanks! -- Peter Xu
© 2016 - 2026 Red Hat, Inc.