| 1234567891011121314151617181920212223242526272829 |
- #include "cpu.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int ark_sys_cpu_get_usage(void) {
- FILE *fp = fopen("/proc/stat", "r");
- if (!fp) return 0;
-
- char line[256];
- if (!fgets(line, sizeof(line), fp)) {
- fclose(fp);
- return 0;
- }
- fclose(fp);
-
- uint64_t user = 0, nice = 0, system = 0, idle = 0;
- if (sscanf(line, "cpu %lu %lu %lu %lu", &user, &nice, &system, &idle) < 4) {
- return 0;
- }
-
- uint64_t total = user + nice + system + idle;
- if (total == 0) return 0;
-
- int usage = (total - idle) * 100 / total;
- if (usage < 0) usage = 0;
- if (usage > 100) usage = 100;
- return usage;
- }
|