summaryrefslogtreecommitdiffstats
path: root/linux/LinuxProcess.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-04-14 20:16:16 +0200
committercgzones <cgzones@googlemail.com>2021-04-26 18:02:58 +0200
commitb41e4d9c546e95fb308db3308848d7dddb4d98cf (patch)
tree77ba38e2fdd1750ff3653d469015448c74515ab3 /linux/LinuxProcess.c
parent6bbb454881986a1a4d2e639b5fb6b7ac47374fe2 (diff)
Rework process field print functions
Make functions formatting data for a process field column less error prone, unify interfaces and improve some internals. * Process_printBytes - rename from Process_humanNumber - take number in bytes, not kilobytes - handle petabytes - increase buffer to avoid crashes when the passed value is ~ ULLONG_MAX * Process_printKBytes - add wrapper for Process_printBytes taking kilobytes keeping -1 as special value * Process_printCount - rename from Process_colorNumber * Process_printTime - add coloring parameter as other print functions - improve coloring and formatting for larger times * Process_printRate - rename from Process_outputRate - use local buffer instead of passed one; this function prints to the RichString after all
Diffstat (limited to 'linux/LinuxProcess.c')
-rw-r--r--linux/LinuxProcess.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c
index f511b413..df7df94e 100644
--- a/linux/LinuxProcess.c
+++ b/linux/LinuxProcess.c
@@ -609,37 +609,37 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
int attr = CRT_colors[DEFAULT_COLOR];
size_t n = sizeof(buffer) - 1;
switch (field) {
- case CMINFLT: Process_colorNumber(str, lp->cminflt, coloring); return;
- case CMAJFLT: Process_colorNumber(str, lp->cmajflt, coloring); return;
- case M_DRS: Process_humanNumber(str, lp->m_drs * pageSizeKB, coloring); return;
- case M_DT: Process_humanNumber(str, lp->m_dt * pageSizeKB, coloring); return;
+ case CMINFLT: Process_printCount(str, lp->cminflt, coloring); return;
+ case CMAJFLT: Process_printCount(str, lp->cmajflt, coloring); return;
+ case M_DRS: Process_printKBytes(str, lp->m_drs * pageSizeKB, coloring); return;
+ case M_DT: Process_printKBytes(str, lp->m_dt * pageSizeKB, coloring); return;
case M_LRS:
if (lp->m_lrs) {
- Process_humanNumber(str, lp->m_lrs * pageSizeKB, coloring);
+ Process_printKBytes(str, lp->m_lrs * pageSizeKB, coloring);
return;
}
attr = CRT_colors[PROCESS_SHADOW];
xSnprintf(buffer, n, " N/A ");
break;
- case M_TRS: Process_humanNumber(str, lp->m_trs * pageSizeKB, coloring); return;
- case M_SHARE: Process_humanNumber(str, lp->m_share * pageSizeKB, coloring); return;
- case M_PSS: Process_humanNumber(str, lp->m_pss, coloring); return;
- case M_SWAP: Process_humanNumber(str, lp->m_swap, coloring); return;
- case M_PSSWP: Process_humanNumber(str, lp->m_psswp, coloring); return;
- case UTIME: Process_printTime(str, lp->utime); return;
- case STIME: Process_printTime(str, lp->stime); return;
- case CUTIME: Process_printTime(str, lp->cutime); return;
- case CSTIME: Process_printTime(str, lp->cstime); return;
- case RCHAR: Process_humanNumber(str, lp->io_rchar, coloring); return;
- case WCHAR: Process_humanNumber(str, lp->io_wchar, coloring); return;
- case SYSCR: Process_colorNumber(str, lp->io_syscr, coloring); return;
- case SYSCW: Process_colorNumber(str, lp->io_syscw, coloring); return;
- case RBYTES: Process_humanNumber(str, lp->io_read_bytes, coloring); return;
- case WBYTES: Process_humanNumber(str, lp->io_write_bytes, coloring); return;
- case CNCLWB: Process_humanNumber(str, lp->io_cancelled_write_bytes, coloring); return;
- case IO_READ_RATE: Process_outputRate(str, buffer, n, lp->io_rate_read_bps, coloring); return;
- case IO_WRITE_RATE: Process_outputRate(str, buffer, n, lp->io_rate_write_bps, coloring); return;
+ case M_TRS: Process_printKBytes(str, lp->m_trs * pageSizeKB, coloring); return;
+ case M_SHARE: Process_printKBytes(str, lp->m_share * pageSizeKB, coloring); return;
+ case M_PSS: Process_printKBytes(str, lp->m_pss, coloring); return;
+ case M_SWAP: Process_printKBytes(str, lp->m_swap, coloring); return;
+ case M_PSSWP: Process_printKBytes(str, lp->m_psswp, coloring); return;
+ case UTIME: Process_printTime(str, lp->utime, coloring); return;
+ case STIME: Process_printTime(str, lp->stime, coloring); return;
+ case CUTIME: Process_printTime(str, lp->cutime, coloring); return;
+ case CSTIME: Process_printTime(str, lp->cstime, coloring); return;
+ case RCHAR: Process_printKBytes(str, lp->io_rchar, coloring); return;
+ case WCHAR: Process_printKBytes(str, lp->io_wchar, coloring); return;
+ case SYSCR: Process_printCount(str, lp->io_syscr, coloring); return;
+ case SYSCW: Process_printCount(str, lp->io_syscw, coloring); return;
+ case RBYTES: Process_printKBytes(str, lp->io_read_bytes, coloring); return;
+ case WBYTES: Process_printKBytes(str, lp->io_write_bytes, coloring); return;
+ case CNCLWB: Process_printKBytes(str, lp->io_cancelled_write_bytes, coloring); return;
+ case IO_READ_RATE: Process_printRate(str, lp->io_rate_read_bps, coloring); return;
+ case IO_WRITE_RATE: Process_printRate(str, lp->io_rate_write_bps, coloring); return;
case IO_RATE: {
double totalRate;
if (!isnan(lp->io_rate_read_bps) && !isnan(lp->io_rate_write_bps))
@@ -650,7 +650,7 @@ static void LinuxProcess_writeField(const Process* this, RichString* str, Proces
totalRate = lp->io_rate_write_bps;
else
totalRate = NAN;
- Process_outputRate(str, buffer, n, totalRate, coloring); return;
+ Process_printRate(str, totalRate, coloring); return;
}
#ifdef HAVE_OPENVZ
case CTID: xSnprintf(buffer, n, "%-8s ", lp->ctid ? lp->ctid : ""); break;

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