File procinfo-tickless.dif of Package procinfo
--- procinfo.c
+++ procinfo.c 2008-07-10 19:23:18.243245843 +0200
@@ -143,16 +143,7 @@ first_page (long sl)
fclose (meminfofp); meminfofp = myfopen (PROC_DIR "meminfo");
- fgets (line, sizeof (line), meminfofp);
-
- if (have_m_c == -1) {
- if (strstr (line, "cached:"))
- have_m_c = 1;
- else
- have_m_c = 0;
- }
-
- if (have_m_l == -1) {
+ if (have_m_l == -1 || have_m_c == -1) {
char kickme[1024];
/* God, this next stuff needs AT LEAST a macro to hide behind. */
fclose (meminfofp); meminfofp = myfopen (PROC_DIR "meminfo");
@@ -161,17 +152,23 @@ first_page (long sl)
have_m_l = 1;
else
have_m_l = 0;
+ if (strstr (kickme, "Cached:"))
+ have_m_c = 1;
+ else
+ have_m_c = 0;
fclose (meminfofp); meminfofp = myfopen (PROC_DIR "meminfo");
}
-
printf ("Memory: Total Used Free "
"Shared Buffers %s\n", have_m_c ? "Cached" : "");
+ fgets (line, sizeof (line), meminfofp);
+
if (have_m_l) {
new.m_to = new.m_us = new.m_fr = new.m_sh = new.m_bu = 0;
- new.s_to = new.s_us = new.s_fr = 0;
+ new.s_to = new.s_us = new.s_fr = new.m_bo = new.m_an = 0;
+ new.n_fs = new.s_lr = new.s_lu = new.s_ca = 0;
do {
char *type = strtok (line, ":");
@@ -190,10 +187,26 @@ first_page (long sl)
new.s_to = VAL;
else if (ISSTR ("SwapFree"))
new.s_fr = VAL;
+ else if (ISSTR ("SwapCached"))
+ new.s_ca = VAL;
+ else if (ISSTR ("Bounce"))
+ new.m_bo = VAL;
+ else if (ISSTR ("AnonPages"))
+ new.m_an = VAL;
+ else if (ISSTR ("NFS_Unstable"))
+ new.n_fs = VAL;
+ else if (ISSTR ("SReclaimable"))
+ new.s_lr = VAL;
+ else if (ISSTR ("SUnreclaim"))
+ new.s_lu = VAL;
} while (fgets (line, sizeof (line), meminfofp));
new.m_us = new.m_to - new.m_fr;
new.s_us = new.s_to - new.s_fr;
+ new.m_ca += new.s_lr;
+ new.m_ca += new.s_lu;
+ new.m_ca += new.n_fs;
+ new.m_ca += new.s_ca;
} else {
@@ -460,13 +473,13 @@ first_page (long sl)
/* XXX Is this stuff still relevant/true? */
#ifdef __i386__ /* IRQ 0 is timer tick on i386's... */
- if (nr_irqs && new.intr[0]) {
+ if (nr_irqs && new.intr[0] && (new.intr[0] != old.intr[0])) {
if (fs && old.uptime)
elapsed = (DIFF(intr[0]) * usr_hz) / sys_hz;
} else
#endif
#ifdef __sparc__ /* IRQ 10 is timer tick on sparc's... */
- if (nr_irqs && new.intr[10]) {
+ if (nr_irqs && new.intr[10] && (new.intr[0] != old.intr[0])) {
if (fs && old.uptime)
elapsed = (DIFF(intr[10]) * usr_hz) / sys_hz;
} else
--- procinfo.h
+++ procinfo.h 2008-07-10 19:14:27.301441388 +0200
@@ -82,7 +82,8 @@ struct info
{
unsigned long uptime;
long m_to, m_us, m_fr, m_sh, m_bu, m_ca;
- long s_to, s_us, s_fr;
+ long s_to, s_us, s_fr, m_bo, m_an, n_fs;
+ long s_lr, s_lu, s_ca;
unsigned long cpu_user, cpu_nice, cpu_sys, cpu_idle, cpu_iowait, cpu_hirq, cpu_sirq, cpu_steal, cpu_guest;
unsigned long disk[8];
unsigned long disk_r[8];