qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v3 7/8] monitor: Use argument type 'T' for migrate_s


From: Markus Armbruster
Subject: [Qemu-devel] [PATCH v3 7/8] monitor: Use argument type 'T' for migrate_set_downtime
Date: Mon, 25 Jan 2010 14:23:07 +0100

Before, it used type 's', which strips quotes and interprets escapes,
and is quite inappropriate for QMP.

Negative arguments are no flushed to zero.  Before, they were cast to
uint32_t, which wrecked the sign.

Ridiculously large arguments including infinities are now rejected.
Before, they were interpreted as zero.  Same for NaN.

Signed-off-by: Markus Armbruster <address@hidden>
---
 migration.c     |   15 ++-------------
 qemu-monitor.hx |    2 +-
 2 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/migration.c b/migration.c
index cd8d9e6..7551953 100644
--- a/migration.c
+++ b/migration.c
@@ -134,21 +134,10 @@ uint64_t migrate_max_downtime(void)
 
 void do_migrate_set_downtime(Monitor *mon, const QDict *qdict)
 {
-    char *ptr;
     double d;
-    const char *value = qdict_get_str(qdict, "value");
-
-    d = strtod(value, &ptr);
-    if (!strcmp(ptr,"ms")) {
-        d *= 1000000;
-    } else if (!strcmp(ptr,"us")) {
-        d *= 1000;
-    } else if (!strcmp(ptr,"ns")) {
-    } else {
-        /* all else considered to be seconds */
-        d *= 1000000000;
-    }
 
+    d = qdict_get_double(qdict, "value") * 1e9;
+    d = MAX(0, MIN(UINT64_MAX, d));
     max_downtime = (uint64_t)d;
 }
 
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index 2354e4f..9257d9c 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -775,7 +775,7 @@ ETEXI
 
     {
         .name       = "migrate_set_downtime",
-        .args_type  = "value:s",
+        .args_type  = "value:T",
         .params     = "value",
         .help       = "set maximum tolerated downtime (in seconds) for 
migrations",
         .mhandler.cmd = do_migrate_set_downtime,
-- 
1.6.6





reply via email to

[Prev in Thread] Current Thread [Next in Thread]