summaryrefslogtreecommitdiff
path: root/src/charts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts.c')
-rw-r--r--src/charts.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/charts.c b/src/charts.c
index 0126b59..33ba014 100644
--- a/src/charts.c
+++ b/src/charts.c
@@ -302,7 +302,8 @@ static void allocate_row(vwm_charts_t *charts, vwm_chart_t *chart, int row)
/* simple helper to map the vmon per-proc argv array into an XTextItem array, deals with threads vs. processes and the possibility of the comm field not getting read in before the process exited... */
static void proc_argv2strs(const vmon_proc_t *proc, vcr_str_t *strs, int max_strs, int *res_n_strs)
{
- int nr = 0;
+ static char n_threads_str[sizeof(STRINGIFY(UINT_MAX)) + sizeof("[]")];
+ int nr = 0;
assert(proc);
assert(strs);
@@ -313,6 +314,13 @@ static void proc_argv2strs(const vmon_proc_t *proc, vcr_str_t *strs, int max_str
strs[0].str = CHART_ISTHREAD_ARGV;
strs[0].len = sizeof(CHART_ISTHREAD_ARGV) - 1;
nr++;
+ } else if (!proc->is_stale) {
+ strs[0].str = n_threads_str;
+ if (proc->is_threaded)
+ strs[0].len = snprintf(n_threads_str, sizeof(n_threads_str), "[%u]", proc->n_current_threads);
+ else
+ strs[0].len = snprintf(n_threads_str, sizeof(n_threads_str), "[]");
+ nr++;
}
if (((vmon_proc_stat_t *)proc->stores[VMON_STORE_PROC_STAT])->comm.len) {
@@ -682,7 +690,7 @@ static void draw_columns(vwm_charts_t *charts, vwm_chart_t *chart, vwm_column_t
case VWM_COLUMN_PROC_ARGV: { /* print the process' argv */
if (heading) {
- str_len = snpf(str, sizeof(str), "ArgV/~ThreadName");
+ str_len = snpf(str, sizeof(str), "[NThreads] ArgV/~ThreadName");
str_justify = VWM_JUSTIFY_LEFT;
} else {
int width;
© All Rights Reserved