qemu-e2k/qapi
Paolo Bonzini e41b509d68 qapi: Refine human printing of sizes
This fixes several bugs or shortcomings of the previous pretty-printer.
In particular:

* use PRIu64 instead of casting to long long

* the exact value is included too

* the correct unit of measure (MiB, GiB, etc.) is used.  PiB and EiB
are added too.

* due to an off-by-one error, 512*2^30 was printed as 0.500MiB rather than
512MiB.  floor(log2(val)) is equal to 63 - clz(val), while the code used 64.

* The desired specification is %g rather than %f, which always uses three
decimals in the current code.  However %g would switch to scientific
notation when the integer part is >= 1000 (e.g. 1000*2^30).  To keep the
code simple, switch to the higher power when the integer part is >= 1000;
overflow is avoided by using frexp instead of clz.

Suggested-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
2014-02-14 21:12:05 +01:00
..
Makefile.objs build: move base QAPI files to libqemuutil.a 2013-01-12 18:42:51 +01:00
opts-visitor.c OptsVisitor: don't try to flatten overlong integer ranges 2013-08-20 11:52:00 -04:00
qapi-dealloc-visitor.c qapi: fix memleak by adding implict struct functions in dealloc visitor 2013-11-05 19:58:38 -08:00
qapi-visit-core.c qapi: make visit_type_size fallback to type_int 2013-07-29 19:33:33 -05:00
qmp-dispatch.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qmp-input-visitor.c qapi: Anonymous unions 2013-07-26 21:10:11 +02:00
qmp-output-visitor.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qmp-registry.c qemu-ga: Extend 'guest-info' command to expose flag 'success-response' 2013-10-10 14:52:37 -05:00
string-input-visitor.c qapi: Add size parser to StringInputVisitor 2014-02-14 21:12:01 +01:00
string-output-visitor.c qapi: Refine human printing of sizes 2014-02-14 21:12:05 +01:00