qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH v2 2/7] cutils: Add bytes_to_str() to format byt


From: Avi Kivity
Subject: [Qemu-devel] Re: [PATCH v2 2/7] cutils: Add bytes_to_str() to format byte values
Date: Wed, 13 Oct 2010 12:25:06 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc13 Thunderbird/3.1.4

 On 10/08/2010 05:48 PM, Stefan Hajnoczi wrote:
From: Anthony Liguori<address@hidden>

This common function converts byte counts to human-readable strings with
proper units.

Signed-off-by: Anthony Liguori<address@hidden>
Signed-off-by: Stefan Hajnoczi<address@hidden>
---
  cutils.c      |   15 +++++++++++++++
  qemu-common.h |    1 +
  2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/cutils.c b/cutils.c
index 6c32198..5041203 100644
--- a/cutils.c
+++ b/cutils.c
@@ -301,3 +301,18 @@ int get_bits_from_size(size_t size)
      return __builtin_ctzl(size);
  #endif
  }
+
+void bytes_to_str(char *buffer, size_t buffer_len, uint64_t size)
+{
+    if (size<  (1ULL<<  10)) {
+        snprintf(buffer, buffer_len, "%" PRIu64 " byte(s)", size);
+    } else if (size<  (1ULL<<  20)) {
+        snprintf(buffer, buffer_len, "%" PRIu64 " KB(s)", size>>  10);
+    } else if (size<  (1ULL<<  30)) {
+        snprintf(buffer, buffer_len, "%" PRIu64 " MB(s)", size>>  20);
+    } else if (size<  (1ULL<<  40)) {
+        snprintf(buffer, buffer_len, "%" PRIu64 " GB(s)", size>>  30);
+    } else {
+        snprintf(buffer, buffer_len, "%" PRIu64 " TB(s)", size>>  40);
+    }
+}

This will show 1.5GB as 1GB. Need either floating point with a couple of digits of precision, or show 1.5GB as 1500MB.

It also misuses SI prefixes. 1 GB means 10^9 bytes, not 2^30 bytes (with a common exception for RAM which is usually packaged in 1.125 times some power of two).

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]