summaryrefslogtreecommitdiffstats
path: root/Process.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2014-04-09 22:32:54 -0300
committerHisham Muhammad <hisham@gobolinux.org>2014-04-09 22:32:54 -0300
commit127f847ca54c14893143f1f678cefa0b060d5b8d (patch)
tree7ce9c377a5d49cd6c099c3ad2b5aba1be3fce4fb /Process.c
parent19b438de1009047ee425d1f36207c20b9c80d43a (diff)
Support really large numbers on 64-bit architectures; first try.
Diffstat (limited to 'Process.c')
-rw-r--r--Process.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/Process.c b/Process.c
index 97f2fff2..9f3d7348 100644
--- a/Process.c
+++ b/Process.c
@@ -141,13 +141,13 @@ typedef struct Process_ {
#endif
int processor;
- int m_size;
- int m_resident;
- int m_share;
- int m_trs;
- int m_drs;
- int m_lrs;
- int m_dt;
+ long m_size;
+ long m_resident;
+ long m_share;
+ long m_trs;
+ long m_drs;
+ long m_lrs;
+ long m_dt;
#ifdef HAVE_OPENVZ
unsigned int ctid;
@@ -325,11 +325,21 @@ void Process_getMaxPid() {
#define ONE_DECIMAL_K 1000
#define ONE_DECIMAL_M (ONE_DECIMAL_K * ONE_DECIMAL_K)
+#define ONE_DECIMAL_G (ONE_DECIMAL_M * ONE_DECIMAL_K)
static void Process_humanNumber(Process* this, RichString* str, unsigned long number) {
char buffer[11];
int len;
if(number >= (10 * ONE_DECIMAL_M)) {
+ #ifdef __LP64__
+ if(number >= (100 * ONE_DECIMAL_G)) {
+ len = snprintf(buffer, 10, "%4ldT ", number / ONE_G);
+ RichString_appendn(str, CRT_colors[LARGE_NUMBER], buffer, len);
+ } else if (number >= (10 * ONE_DECIMAL_G)) {
+ len = snprintf(buffer, 10, "%3.1fT ", (float)number / ONE_M);
+ RichString_appendn(str, CRT_colors[LARGE_NUMBER], buffer, len);
+ } else
+ #endif
if(number >= (100 * ONE_DECIMAL_M)) {
len = snprintf(buffer, 10, "%4ldG ", number / ONE_M);
RichString_appendn(str, CRT_colors[LARGE_NUMBER], buffer, len);

© 2014-2024 Faster IT GmbH | imprint | privacy policy