1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <stdio.h>
#include "block.h"
#define ICON_CPU " "
FILE *proc_stat;
int cpu_stat[8], cpu_delay = 6;
char cpu_str[11];
void cpu(void) {
if (cpu_delay++ < 6) goto show_stat;
else cpu_delay = 0;
double prev_idle, prev_total, total, idle, usage_p;
prev_idle = idle;
prev_total = total;
if (!proc_stat) proc_stat = fopen("/proc/stat","r");
if (proc_stat) {
int c, i;
fseek(proc_stat,5,0);
for (i = 0;i < 8;i++) cpu_stat[i] = 0;
for (i = 0; i < 8;) {
c = fgetc(proc_stat);
if (c != ' ')
cpu_stat[i] = 10 * cpu_stat[i] + (c - '0');
else i++;
}
total = cpu_stat[0]+cpu_stat[1]+cpu_stat[2];
idle = cpu_stat[3]+cpu_stat[4];
total += cpu_stat[5]+cpu_stat[6]+cpu_stat[7];
}
usage_p = (idle + total) - (prev_idle + prev_total);
usage_p -= (idle - prev_idle);
usage_p *= 100;
usage_p /= (idle + total) - (prev_idle + prev_total);
snprintf(cpu_str,11,ICON_CPU"%02.2f%%",usage_p);
show_stat:
if (usage_p < 60)
block(cpu_str,"#222222","#acae3299","#acae3299");
else
block(cpu_str,"#222222","#ea544399","#ea544399");
}
|