9 int main(int argc, char *argv[])
11 long long int buddy[MAX_ORDER], bud[MAX_ORDER], tot;
17 struct timespec sleep;
20 ret = sscanf(argv[1], "%lf", &delay);
22 sleep.tv_sec = (time_t)delay;
23 sleep.tv_nsec = ((long)(delay * 1000 * 1000 * 1000) %
24 (1000l * 1000l * 1000l));
28 file = fopen("/proc/buddyinfo", "r");
30 perror("fopen failed");
32 for (i = 0; i < MAX_ORDER; i++)
35 while (fgets(str, sizeof(str), file)) {
36 for (i = 0; i < sizeof(str); i++)
40 for (; i < sizeof(str); i++)
44 for (; i < sizeof(str); i++)
48 for (; i < sizeof(str); i++)
54 i = sscanf(s, " %lld %lld %lld %lld"
55 "%lld %lld %lld %lld %lld %lld %lld\n",
56 &bud[0], &bud[1], &bud[2], &bud[3], &bud[4],
57 &bud[5], &bud[6], &bud[7], &bud[8], &bud[9],
59 for (i = 0; i < MAX_ORDER; i++)
64 for (i = 0; i < MAX_ORDER; i++) {
65 printf("% 5lld.%02lldM",
66 (buddy[i] * (1 << (i + 2))) >> 10,
67 (buddy[i] * (1 << (i + 2))) % 1024 * 100 / 1024);
68 tot += buddy[i] * (1 << (i + 2));
70 printf("% 5lldM\n", tot >> 10);
72 nanosleep(&sleep, NULL);