From e02654ff390253854338f4f586286f4e07912a96 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sat, 21 Sep 2024 15:47:54 -0700 Subject: libvmon: get the number of cpus Preparatory commit for enabling charts that scale per-thread and per-non-threaded-process CPU utilization levels by number of cpus, so they can utilize the whole row. --- src/libvmon/vmon.c | 3 +++ src/libvmon/vmon.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/libvmon/vmon.c b/src/libvmon/vmon.c index a8e2121..2815d2e 100644 --- a/src/libvmon/vmon.c +++ b/src/libvmon/vmon.c @@ -1011,6 +1011,9 @@ int vmon_init(vmon_t *vmon, vmon_flags_t flags, vmon_sys_wants_t sys_wants, vmon vmon->sys_wants = sys_wants; vmon->proc_wants = proc_wants; vmon->ticks_per_sec = sysconf(_SC_CLK_TCK); + vmon->num_cpus = sysconf(_SC_NPROCESSORS_ONLN); + if (vmon->num_cpus <= 0) + vmon->num_cpus = 1; /* default to 1 cpu */ /* here we populate the sys and proc function tables */ #define vmon_want(_sym, _name, _func) \ diff --git a/src/libvmon/vmon.h b/src/libvmon/vmon.h index cf282b0..6668605 100644 --- a/src/libvmon/vmon.h +++ b/src/libvmon/vmon.h @@ -277,6 +277,7 @@ typedef struct _vmon_t { vmon_sys_wants_t sys_wants; /* system-wide wants mask */ vmon_proc_wants_t proc_wants; /* inherited per-process wants mask */ long ticks_per_sec; /* sysconf(_SC_CLK_TCK) */ + long num_cpus; /* sysconf(_SC_NPROCESSORS_ONLN) */ /* function tables for mapping of wants bits to functions (sys-wide and per-process) */ int (*sys_funcs[VMON_STORE_SYS_NR])(struct _vmon_t *, void **); -- cgit v1.2.3