, &cpus[Cpu_faux_tot].cur.i, &cpus[Cpu_faux_tot].cur.w, &cpus[Cpu_faux_tot].cur.x
, &cpus[Cpu_faux_tot].cur.y, &cpus[Cpu_faux_tot].cur.z))
error_exit(N_txt(FAIL_statget_txt));
+#ifndef CPU_ZEROTICS
cpus[Cpu_faux_tot].cur.tot = cpus[Cpu_faux_tot].cur.u + cpus[Cpu_faux_tot].cur.s
+ cpus[Cpu_faux_tot].cur.n + cpus[Cpu_faux_tot].cur.i + cpus[Cpu_faux_tot].cur.w
+ cpus[Cpu_faux_tot].cur.x + cpus[Cpu_faux_tot].cur.y + cpus[Cpu_faux_tot].cur.z;
-#ifndef CPU_ZEROTICS
- /* if a Nehalem type cpu has been turned off completely, and thus registers
- very few total tics, we'll force it to be treated as idle when that total
- falls below a % of those expected -- other cpus will register their full
- number of expected tics as 'idle' and thus won't be effected */
+ /* if a cpu has registered substantially fewer tics than those expected,
+ we'll force it to be treated as 'idle' so as not to present misleading
+ percentages. */
cpus[Cpu_faux_tot].edge =
((cpus[Cpu_faux_tot].cur.tot - cpus[Cpu_faux_tot].sav.tot) / smp_num_cpus) / (100 / TICS_EDGE);
#endif
}
#ifndef CPU_ZEROTICS
cpus[i].edge = cpus[Cpu_faux_tot].edge;
-#endif
// this is for symmetry only, it's not currently required
cpus[i].cur.tot = cpus[Cpu_faux_tot].cur.tot;
+#endif
#ifdef PRETEND4CPUS
cpus[i].id = i;
#endif
for nls support inclusion. They're identified with:
// nls_maybe */
- /* For initiating the topic of potential % CPU distortions due
- to Nehalem type processors (see CPU_ZEROTICS), thanks to:
- Jaromir Capik, <jcapik@redhat.com> - February, 2012 */
+ /* For initiating the topic of potential % CPU distortions due to
+ to kernel and/or cpu anomalies (see CPU_ZEROTICS), thanks to:
+ Jaromir Capik, <jcapik@redhat.com> - February, 2012 */
#ifdef PRETEND2_5_X
#define linux_version_code LINUX_VERSION(2,5,43)
-- used at startup and for task/thread mode transitions */
#define PROC_XTRA -1
+#ifndef CPU_ZEROTICS
/* This is the % used in establishing the tics threshold below
which a cpu is treated as 'idle' rather than displaying
misleading state percentages */
#define TICS_EDGE 20
+#endif
/* ##### Enum's and Typedef's ############################################ */
2.6.0 kernel: x == hi (hardware irq time), y == si (software irq time)
2.6.11 kernel: z == st (virtual steal time) */
TIC_t u, n, s, i, w, x, y, z; // as represented in /proc/stat
+#ifndef CPU_ZEROTICS
SIC_t tot; // total from /proc/stat line 1
+#endif
} CT_t;
typedef struct CPU_t {