]> Git Repo - qemu.git/commitdiff
qdev: provide DEFINE_PROP_INT64()
authorPeter Xu <[email protected]>
Tue, 18 Jul 2017 03:39:01 +0000 (11:39 +0800)
committerJuan Quintela <[email protected]>
Tue, 18 Jul 2017 15:36:19 +0000 (17:36 +0200)
We have nearly 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 <[email protected]>
CC: Eduardo Habkost <[email protected]>
CC: Marc-AndrĂ© Lureau <[email protected]>
CC: Peter Xu <[email protected]>
CC: Juan Quintela <[email protected]>
CC: Marcel Apfelbaum <[email protected]>
CC: Eric Blake <[email protected]>
Reviewed-by: Marc-AndrĂ© Lureau <[email protected]>
Reviewed-by: Marcel Apfelbaum <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <1500349150[email protected]>
Signed-off-by: Juan Quintela <[email protected]>
hw/core/qdev-properties.c
include/hw/qdev-properties.h

index dcecdf03e544d6632aa40ef7f8f158357fd85097..c1d4e5480aaba8e9bb0a0797cab404683f20d8d6 100644 (file)
@@ -404,6 +404,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);
+}
+
 const PropertyInfo qdev_prop_uint64 = {
     .name  = "uint64",
     .get   = get_uint64,
@@ -411,6 +436,13 @@ const PropertyInfo qdev_prop_uint64 = {
     .set_default_value = set_default_value_uint,
 };
 
+const 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)
index 39297961f36289b1af85fbfc63905f7a2b7f2ddb..e2321f1cc1ecec808e95d05866d615e43ce1ae6a 100644 (file)
@@ -13,6 +13,7 @@ extern const PropertyInfo qdev_prop_uint16;
 extern const PropertyInfo qdev_prop_uint32;
 extern const PropertyInfo qdev_prop_int32;
 extern const PropertyInfo qdev_prop_uint64;
+extern const PropertyInfo qdev_prop_int64;
 extern const PropertyInfo qdev_prop_size;
 extern const PropertyInfo qdev_prop_string;
 extern const PropertyInfo qdev_prop_chr;
@@ -157,6 +158,8 @@ extern const PropertyInfo qdev_prop_link;
     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_SIGNED(_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)                   \
This page took 0.034285 seconds and 4 git commands to generate.