diff options
author | des <des@FreeBSD.org> | 2003-09-22 15:52:32 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2003-09-22 15:52:32 +0000 |
commit | 111a6744cd1c776812920821ae50b538e92134ae (patch) | |
tree | f3cebda785314eff71e5d2bd778b2c29478254c0 /sys | |
parent | eed69ab82ae4c7052d1198d62bae3532d52e29ea (diff) | |
download | FreeBSD-src-111a6744cd1c776812920821ae50b538e92134ae.zip FreeBSD-src-111a6744cd1c776812920821ae50b538e92134ae.tar.gz |
Fake multi-cpu statistics for proc/stat by dividing the totals by the
number of CPUs.
PR: kern/27522
Diffstat (limited to 'sys')
-rw-r--r-- | sys/compat/linprocfs/linprocfs.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index bf7861b..9e11927 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -413,18 +413,31 @@ linprocfs_domtab(PFS_FILL_ARGS) static int linprocfs_dostat(PFS_FILL_ARGS) { + int name[2], olen, plen; + int i, ncpu; + + name[0] = CTL_HW; + name[1] = HW_NCPU; + if (kernel_sysctl(td, name, 2, &ncpu, &olen, NULL, 0, &plen) != 0) + ncpu = 0; + sbuf_printf(sb, "cpu %ld %ld %ld %ld\n", + T2J(cp_time[CP_USER]), + T2J(cp_time[CP_NICE]), + T2J(cp_time[CP_SYS] /*+ cp_time[CP_INTR]*/), + T2J(cp_time[CP_IDLE])); + for (i = 0; i < ncpu; ++i) + sbuf_printf(sb, "cpu%d %ld %ld %ld %ld\n", i, + T2J(cp_time[CP_USER]) / ncpu, + T2J(cp_time[CP_NICE]) / ncpu, + T2J(cp_time[CP_SYS]) / ncpu, + T2J(cp_time[CP_IDLE]) / ncpu); sbuf_printf(sb, - "cpu %ld %ld %ld %ld\n" "disk 0 0 0 0\n" "page %u %u\n" "swap %u %u\n" "intr %u\n" "ctxt %u\n" "btime %lld\n", - T2J(cp_time[CP_USER]), - T2J(cp_time[CP_NICE]), - T2J(cp_time[CP_SYS] /*+ cp_time[CP_INTR]*/), - T2J(cp_time[CP_IDLE]), cnt.v_vnodepgsin, cnt.v_vnodepgsout, cnt.v_swappgsin, |