diff options
author | Markus Armbruster <armbru@redhat.com> | 2010-01-25 14:23:06 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-02-03 12:36:26 -0600 |
commit | fccfb11e0d24ece016825ae064230a2a05d23ed8 (patch) | |
tree | 8653df36806b46e2bcba38bdfb205dc82de6d5b7 /monitor.c | |
parent | 5fd9083cd8753be3a0bb9d772efdf1d7aa71c59c (diff) | |
download | qemu-fccfb11e0d24ece016825ae064230a2a05d23ed8.tar.gz qemu-fccfb11e0d24ece016825ae064230a2a05d23ed8.tar.bz2 qemu-fccfb11e0d24ece016825ae064230a2a05d23ed8.zip |
monitor: New argument type 'T'
This is a double value with optional suffixes ms, us, ns. We'll need
this to get migrate_set_downtime() QMP-ready.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -75,6 +75,9 @@ * user mode accepts an optional G, g, M, m, K, k suffix, * which multiplies the value by 2^30 for suffixes G and * g, 2^20 for M and m, 2^10 for K and k + * 'T' double + * user mode accepts an optional ms, us, ns suffix, + * which divides the value by 1e3, 1e6, 1e9, respectively * '/' optional gdb-like print format (like "/10x") * * '?' optional type (for all types, except '/') @@ -3662,6 +3665,7 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, } break; case 'b': + case 'T': { double val; @@ -3676,7 +3680,7 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, if (get_double(mon, &val, &p) < 0) { goto fail; } - if (*p) { + if (c == 'b' && *p) { switch (*p) { case 'K': case 'k': val *= 1 << 10; p++; break; @@ -3686,6 +3690,16 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, val *= 1 << 30; p++; break; } } + if (c == 'T' && p[0] && p[1] == 's') { + switch (*p) { + case 'm': + val /= 1e3; p += 2; break; + case 'u': + val /= 1e6; p += 2; break; + case 'n': + val /= 1e9; p += 2; break; + } + } if (*p && !qemu_isspace(*p)) { monitor_printf(mon, "Unknown unit suffix\n"); goto fail; @@ -4119,6 +4133,7 @@ static int check_arg(const CmdArgs *cmd_args, QDict *args) } break; case 'b': + case 'T': if (qobject_type(value) != QTYPE_QINT && qobject_type(value) != QTYPE_QFLOAT) { qemu_error_new(QERR_INVALID_PARAMETER_TYPE, name, "number"); return -1; |