mirror of https://github.com/xemu-project/xemu.git
utils: Deprecate hex-with-suffix sizes
Supporting '0x20M' looks odd, particularly since we have a 'B' suffix that is ambiguous for bytes, as well as a less-frequently-used 'E' suffix for extremely large exibytes. In practice, people using hex inputs are specifying values in bytes (and would have written 0x2000000, or possibly relied on default_suffix in the case of qemu_strtosz_MiB), and the use of scaling suffixes makes the most sense for inputs in decimal (where the user would write 32M). But rather than outright dropping support for hex-with-suffix, let's follow our deprecation policy. Sadly, since qemu_strtosz() does not have an Err** parameter, and plumbing that in would be a much larger task, we instead go with just directly emitting the deprecation warning to stderr. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20210211204438.1184395-4-eblake@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
cf923b783e
commit
f174cd3350
|
@ -166,6 +166,14 @@ Using ``-M kernel-irqchip=off`` with x86 machine types that include a local
|
||||||
APIC is deprecated. The ``split`` setting is supported, as is using
|
APIC is deprecated. The ``split`` setting is supported, as is using
|
||||||
``-M kernel-irqchip=off`` with the ISA PC machine type.
|
``-M kernel-irqchip=off`` with the ISA PC machine type.
|
||||||
|
|
||||||
|
hexadecimal sizes with scaling multipliers (since 6.0)
|
||||||
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
Input parameters that take a size value should only use a size suffix
|
||||||
|
(such as 'k' or 'M') when the base is written in decimal, and not when
|
||||||
|
the value is hexadecimal. That is, '0x20M' is deprecated, and should
|
||||||
|
be written either as '32M' or as '0x2000000'.
|
||||||
|
|
||||||
QEMU Machine Protocol (QMP) commands
|
QEMU Machine Protocol (QMP) commands
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -250,6 +250,9 @@ static int64_t suffix_mul(char suffix, int64_t unit)
|
||||||
* fractional portion is truncated to byte
|
* fractional portion is truncated to byte
|
||||||
* - 0x7fEE - hexadecimal, unit determined by @default_suffix
|
* - 0x7fEE - hexadecimal, unit determined by @default_suffix
|
||||||
*
|
*
|
||||||
|
* The following cause a deprecation warning, and may be removed in the future
|
||||||
|
* - 0xabc{kKmMgGtTpP} - hex with scaling suffix
|
||||||
|
*
|
||||||
* The following are intentionally not supported
|
* The following are intentionally not supported
|
||||||
* - octal, such as 08
|
* - octal, such as 08
|
||||||
* - fractional hex, such as 0x1.8
|
* - fractional hex, such as 0x1.8
|
||||||
|
@ -272,7 +275,7 @@ static int do_strtosz(const char *nptr, const char **end,
|
||||||
int retval;
|
int retval;
|
||||||
const char *endptr, *f;
|
const char *endptr, *f;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
bool mul_required = false;
|
bool mul_required = false, hex = false;
|
||||||
uint64_t val;
|
uint64_t val;
|
||||||
int64_t mul;
|
int64_t mul;
|
||||||
double fraction = 0.0;
|
double fraction = 0.0;
|
||||||
|
@ -298,6 +301,7 @@ static int do_strtosz(const char *nptr, const char **end,
|
||||||
retval = -EINVAL;
|
retval = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
hex = true;
|
||||||
} else if (*endptr == '.') {
|
} else if (*endptr == '.') {
|
||||||
/*
|
/*
|
||||||
* Input looks like a fraction. Make sure even 1.k works
|
* Input looks like a fraction. Make sure even 1.k works
|
||||||
|
@ -320,6 +324,10 @@ static int do_strtosz(const char *nptr, const char **end,
|
||||||
c = *endptr;
|
c = *endptr;
|
||||||
mul = suffix_mul(c, unit);
|
mul = suffix_mul(c, unit);
|
||||||
if (mul > 0) {
|
if (mul > 0) {
|
||||||
|
if (hex) {
|
||||||
|
warn_report("Using a multiplier suffix on hex numbers "
|
||||||
|
"is deprecated: %s", nptr);
|
||||||
|
}
|
||||||
endptr++;
|
endptr++;
|
||||||
} else {
|
} else {
|
||||||
mul = suffix_mul(default_suffix, unit);
|
mul = suffix_mul(default_suffix, unit);
|
||||||
|
|
Loading…
Reference in New Issue