char irq_name[MAX_IRQ_LEN];
};
-/* Structure for CPU statistics */
struct stats_cpu {
data_t cpu_user;
data_t cpu_nice;
data_t cpu_guest;
};
-/* Struct for interrupts statistics */
struct stats_irq {
data_t irq_nr;
};
-/* Globals. Try to sort by size. */
+/* Globals. Sort by size and access frequency. */
struct globals {
int interval;
int count;
if (!starts_with_cpu(buf))
continue; /* not "cpu" */
- if (buf[3] == ' ') {
- /* "cpu " */
- cp = cpu;
- } else {
- /* "cpuN" */
+
+ cp = cpu; /* for "cpu " case */
+ if (buf[3] != ' ') {
+ /* "cpuN " */
if (G.cpu_nr == 0
|| sscanf(buf + 3, "%u ", &cpu_number) != 1
|| cpu_number >= G.cpu_nr
cp = &cpu[cpu_number + 1];
}
- /* Read the jiffies, save them */
+ /* Read the counters, save them */
/* Not all fields have to be present */
memset(cp, 0, sizeof(*cp));
- sscanf(skip_non_whitespace(buf + 3),
+ sscanf(buf, "%*s"
" %"FMT_DATA"u %"FMT_DATA"u %"FMT_DATA"u"
" %"FMT_DATA"u %"FMT_DATA"u %"FMT_DATA"u"
" %"FMT_DATA"u %"FMT_DATA"u %"FMT_DATA"u",
&cp->cpu_user, &cp->cpu_nice, &cp->cpu_system,
&cp->cpu_idle, &cp->cpu_iowait, &cp->cpu_irq,
- &cp->cpu_softirq, &cp->cpu_steal,
- &cp->cpu_guest
+ &cp->cpu_softirq, &cp->cpu_steal, &cp->cpu_guest
);
/*
* Compute uptime in jiffies (1/HZ), it'll be the sum of
/* "cpu " */
*up = sum;
} else {
- /* "cpuN" */
+ /* "cpuN " */
if (cpu_number == 0 && *up0 != 0) {
/* Compute uptime of single CPU */
*up0 = sum;
strftime(cur_date, sizeof(cur_date), "%x", t);
- printf("%s %s (%s) \t%s \t_%s_\t(%d CPU)\n",
+ printf("%s %s (%s)\t%s\t_%s_\t(%u CPU)\n",
uts.sysname, uts.release, uts.nodename, cur_date, uts.machine, G.cpu_nr);
}