diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-10-30 05:52:29 -0700 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-10-30 05:52:29 -0700 |
| commit | be5e48abecd137b47e4493a8fd616186c61f48f7 (patch) | |
| tree | 4184faeca4bb606af98deb606d9b53db3ac314b4 /lib/memory.c | |
| parent | 526e17284570266dcdd606ff163a614e6b3655a5 (diff) | |
| parent | 2bed4e86e378334341e01f3afe33784ef2713e83 (diff) | |
Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster
Conflicts:
zebra/rib.h
zebra/zebra_rib.c
zebra/zebra_vty.c
Diffstat (limited to 'lib/memory.c')
| -rw-r--r-- | lib/memory.c | 43 |
1 files changed, 15 insertions, 28 deletions
diff --git a/lib/memory.c b/lib/memory.c index a9149e10ff..172ddfc49c 100644 --- a/lib/memory.c +++ b/lib/memory.c @@ -437,41 +437,28 @@ memory_init (void) const char * mtype_memstr (char *buf, size_t len, unsigned long bytes) { - unsigned int t, g, m, k; - + unsigned int m, k; + /* easy cases */ if (!bytes) return "0 bytes"; if (bytes == 1) return "1 byte"; - - if (sizeof (unsigned long) >= 8) - /* Hacked to make it not warn on ILP32 machines - * Shift will always be 40 at runtime. See below too */ - t = bytes >> (sizeof (unsigned long) >= 8 ? 40 : 0); - else - t = 0; - g = bytes >> 30; + + /* + * When we pass the 2gb barrier mallinfo() can no longer report + * correct data so it just does something odd... + * Reporting like Terrabytes of data. Which makes users... + * edgy.. yes edgy that's the term for it. + * So let's just give up gracefully + */ + if (bytes > 0x7fffffff) + return "> 2GB"; + m = bytes >> 20; k = bytes >> 10; - - if (t > 10) - { - /* The shift will always be 39 at runtime. - * Just hacked to make it not warn on 'smaller' machines. - * Static compiler analysis should mean no extra code - */ - if (bytes & (1UL << (sizeof (unsigned long) >= 8 ? 39 : 0))) - t++; - snprintf (buf, len, "%4d TiB", t); - } - else if (g > 10) - { - if (bytes & (1 << 29)) - g++; - snprintf (buf, len, "%d GiB", g); - } - else if (m > 10) + + if (m > 10) { if (bytes & (1 << 19)) m++; |
