Re: [PATCH 1/3] qemu: Add strtosz_suffix_unit function

Markus Armbruster
2011-07-08T08:00:50Z

Joerg Roedel <joerg.roedel@amd.com> writes:

> This function does the same as the strtosz_suffix function
> except that it allows to specify the unit to which the
> k/M/B/T suffixes apply. This function will be used later to
> parse the tsc-frequency from the command-line.
>
> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
> ---
> cutils.c | 16 +++++++++++-----
> qemu-common.h | 2 ++
> 2 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/cutils.c b/cutils.c
> index f9a7e36..28049e0 100644
> --- a/cutils.c
> +++ b/cutils.c
> @@ -322,7 +322,8 @@ int fcntl_setfl(int fd, int flag)
> * value must be terminated by whitespace, ',' or '\0'. Return -1 on
> * error.
> */
> -int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
> +int64_t strtosz_suffix_unit(const char *nptr, char **end,
> + const char default_suffix, int64_t unit)
> {
> int64_t retval = -1;
> char *endptr;
> @@ -362,20 +363,20 @@ int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
> }
> break;
> case STRTOSZ_DEFSUFFIX_KB:
> - mul = 1 << 10;
> + mul = unit;
> break;
> case 0:
> if (mul_required) {
> goto fail;
> }
> case STRTOSZ_DEFSUFFIX_MB:
> - mul = 1ULL << 20;
> + mul = unit * unit;
> break;
> case STRTOSZ_DEFSUFFIX_GB:
> - mul = 1ULL << 30;
> + mul = unit * unit * unit;
> break;
> case STRTOSZ_DEFSUFFIX_TB:
> - mul = 1ULL << 40;
> + mul = unit * unit * unit * unit;
> break;
> default:
> goto fail;
> @@ -405,6 +406,11 @@ fail:
> return retval;
> }

Why would anyone ever call this function with an unit argument other
than 1000 or 1024?

Without such a use case, I'd rather give strtosz_suffix() a flag
parameter to pick SI prefixes (multiples of 1000) vs. binary prefixes
(multiples of 1024). …