diff --git a/Process.c b/Process.c index 07ecba15..dddd7fcd 100644 --- a/Process.c +++ b/Process.c @@ -335,7 +335,10 @@ void Process_outputRate(RichString* str, char* buffer, int n, double rate, int c largeNumberColor = CRT_colors[PROCESS]; processMegabytesColor = CRT_colors[PROCESS]; } - if (rate < ONE_K) { + if (rate == -1) { + int len = snprintf(buffer, n, " no perm "); + RichString_appendn(str, CRT_colors[PROCESS_SHADOW], buffer, len); + } else if (rate < ONE_K) { int len = snprintf(buffer, n, "%7.2f B/s ", rate); RichString_appendn(str, processColor, buffer, len); } else if (rate < ONE_K * ONE_K) { diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c index 17790f65..43b5e38f 100644 --- a/linux/LinuxProcess.c +++ b/linux/LinuxProcess.c @@ -313,7 +313,12 @@ void LinuxProcess_writeField(Process* this, RichString* str, ProcessField field) case CNCLWB: Process_colorNumber(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 IO_RATE: Process_outputRate(str, buffer, n, lp->io_rate_read_bps + lp->io_rate_write_bps, coloring); return; + case IO_RATE: { + double totalRate = (lp->io_rate_read_bps != -1) + ? (lp->io_rate_read_bps + lp->io_rate_write_bps) + : -1; + Process_outputRate(str, buffer, n, totalRate, coloring); return; + } #endif #ifdef HAVE_OPENVZ case CTID: snprintf(buffer, n, "%7u ", lp->ctid); break;