- } else if (strncmp(buf, "cpu ", 4) == 0) {
- sscanf(buf, "%*s %lu %lu %lu", &(cpu[index].cpu_user), &(cpu[index].cpu_nice), &(cpu[index].cpu_system));
- index++;
+ } else if (strncmp(buf, "cpu", 3) == 0) {
+ index = isdigit(buf[3]) ? ((int)buf[3]) - 0x2F : 0;
+ sscanf(buf, stat_template
+ , &(cpu[index].cpu_user)
+ , &(cpu[index].cpu_nice)
+ , &(cpu[index].cpu_system)
+ , &(cpu[index].cpu_idle)
+ , &(cpu[index].cpu_iowait)
+ , &(cpu[index].cpu_irq)
+ , &(cpu[index].cpu_softirq)
+ , &(cpu[index].cpu_steal)
+ );
+
+ cpu[index].cpu_total = cpu[index].cpu_user
+ + cpu[index].cpu_nice
+ + cpu[index].cpu_system
+ + cpu[index].cpu_idle
+ + cpu[index].cpu_iowait
+ + cpu[index].cpu_irq
+ + cpu[index].cpu_softirq
+ + cpu[index].cpu_steal
+ ;
+
+ cpu[index].cpu_active_total = cpu[index].cpu_total - (cpu[index].cpu_idle + cpu[index].cpu_iowait);