Revision fccfb11e monitor.c
b/monitor.c | ||
---|---|---|
75 | 75 |
* user mode accepts an optional G, g, M, m, K, k suffix, |
76 | 76 |
* which multiplies the value by 2^30 for suffixes G and |
77 | 77 |
* g, 2^20 for M and m, 2^10 for K and k |
78 |
* 'T' double |
|
79 |
* user mode accepts an optional ms, us, ns suffix, |
|
80 |
* which divides the value by 1e3, 1e6, 1e9, respectively |
|
78 | 81 |
* '/' optional gdb-like print format (like "/10x") |
79 | 82 |
* |
80 | 83 |
* '?' optional type (for all types, except '/') |
... | ... | |
3662 | 3665 |
} |
3663 | 3666 |
break; |
3664 | 3667 |
case 'b': |
3668 |
case 'T': |
|
3665 | 3669 |
{ |
3666 | 3670 |
double val; |
3667 | 3671 |
|
... | ... | |
3676 | 3680 |
if (get_double(mon, &val, &p) < 0) { |
3677 | 3681 |
goto fail; |
3678 | 3682 |
} |
3679 |
if (*p) { |
|
3683 |
if (c == 'b' && *p) {
|
|
3680 | 3684 |
switch (*p) { |
3681 | 3685 |
case 'K': case 'k': |
3682 | 3686 |
val *= 1 << 10; p++; break; |
... | ... | |
3686 | 3690 |
val *= 1 << 30; p++; break; |
3687 | 3691 |
} |
3688 | 3692 |
} |
3693 |
if (c == 'T' && p[0] && p[1] == 's') { |
|
3694 |
switch (*p) { |
|
3695 |
case 'm': |
|
3696 |
val /= 1e3; p += 2; break; |
|
3697 |
case 'u': |
|
3698 |
val /= 1e6; p += 2; break; |
|
3699 |
case 'n': |
|
3700 |
val /= 1e9; p += 2; break; |
|
3701 |
} |
|
3702 |
} |
|
3689 | 3703 |
if (*p && !qemu_isspace(*p)) { |
3690 | 3704 |
monitor_printf(mon, "Unknown unit suffix\n"); |
3691 | 3705 |
goto fail; |
... | ... | |
4119 | 4133 |
} |
4120 | 4134 |
break; |
4121 | 4135 |
case 'b': |
4136 |
case 'T': |
|
4122 | 4137 |
if (qobject_type(value) != QTYPE_QINT && qobject_type(value) != QTYPE_QFLOAT) { |
4123 | 4138 |
qemu_error_new(QERR_INVALID_PARAMETER_TYPE, name, "number"); |
4124 | 4139 |
return -1; |
Also available in: Unified diff