Submitted By: Jim Gifford (patches at jg555 dot com) Date: 2005-03-21 Initial Package Version: 18 Origin: Fedora Upstream Status: Unknown Description: Uses Sysconf to determine CPU information diff -Naur procinfo-18.orig/procinfo.c procinfo-18/procinfo.c --- procinfo-18.orig/procinfo.c 2001-02-25 11:29:16.000000000 +0000 +++ procinfo-18/procinfo.c 2005-03-22 00:21:43.000000000 +0000 @@ -249,6 +249,9 @@ new.cpu_nice = VAL; new.cpu_sys = VAL; new.cpu_idle = VAL; + new.cpu_iowait = VAL; + new.cpu_irq = VAL; + new.cpu_softirq = VAL; /* * according to bug #1959, sometimes the cpu_idle * seems to go backwards(!) on SMP boxes. This may @@ -373,7 +376,9 @@ putchar ('\n'); printf ("system: %s %s", - hms (bDIFF (cpu_sys)), perc (bDIFF (cpu_sys), elapsed, nr_cpus)); + hms (bDIFF (cpu_sys) + bDIFF (cpu_irq) + bDIFF (cpu_softirq)), + perc (bDIFF (cpu_sys) + bDIFF (cpu_irq) + bDIFF (cpu_softirq), + elapsed, nr_cpus)); printf (" swap in :%9lu", bDIFF (swin)); if (new.disk_r[2]) printf (" disk 3: %8lur%8luw\n", bDIFF (disk_r[2]), @@ -384,7 +389,8 @@ putchar ('\n'); printf ("idle : %s %s", - hms (bDIFF (cpu_idle)), perc (bDIFF (cpu_idle), elapsed, nr_cpus)); + hms (bDIFF (cpu_idle) + bDIFF (cpu_iowait)), + perc (bDIFF (cpu_idle) + bDIFF (cpu_iowait), elapsed, nr_cpus)); printf (" swap out:%9lu", bDIFF (swout)); if (new.disk_r[3]) printf (" disk 4: %8lur%8luw\n", bDIFF (disk_r[3]), @@ -831,19 +837,7 @@ } /* Count number of CPUs */ - cpuinfofp = myfopen (PROC_DIR "cpuinfo"); - if (cpuinfofp) { - while (fgets (line, sizeof (line), cpuinfofp)) - if (!strncmp ("processor", line, 9)) /* intel */ - nr_cpus++; - else if (!strncmp ("ncpus ", line, 6)) /* sparc */ - nr_cpus = atoi(line+19); - else if (!strncmp ("cpus detected", line, 13)) /* alpha */ - nr_cpus = atoi(line+27); - fclose (cpuinfofp); - } - if (nr_cpus == 0) - nr_cpus = 1; + nr_cpus = sysconf (_SC_NPROCESSORS_ONLN); /* Gets called from winsz(), but in case stdout is redirected: */ version = make_version (versionfp); diff -Naur procinfo-18.orig/procinfo.h procinfo-18/procinfo.h --- procinfo-18.orig/procinfo.h 2001-02-24 23:30:45.000000000 +0000 +++ procinfo-18/procinfo.h 2005-03-22 00:21:43.000000000 +0000 @@ -82,6 +82,7 @@ long m_to, m_us, m_fr, m_sh, m_bu, m_ca; long s_to, s_us, s_fr; unsigned long cpu_user, cpu_nice, cpu_sys, cpu_idle; + unsigned long cpu_iowait, cpu_irq, cpu_softirq; unsigned long disk[5]; unsigned long disk_r[5]; unsigned long disk_w[5];