8 int main(int argc, char *argv[])
10 long long int buddy[MAX_ORDER], bud[MAX_ORDER], tot;
17 file = fopen("/proc/buddyinfo", "r");
19 perror("fopen failed");
21 for (i = 0; i < MAX_ORDER; i++)
24 while (fgets(str, sizeof(str), file)) {
25 for (i = 0; i < sizeof(str); i++)
29 for (; i < sizeof(str); i++)
33 for (; i < sizeof(str); i++)
37 for (; i < sizeof(str); i++)
43 i = sscanf(s, " %lld %lld %lld %lld"
44 "%lld %lld %lld %lld %lld %lld %lld\n",
45 &bud[0], &bud[1], &bud[2], &bud[3], &bud[4],
46 &bud[5], &bud[6], &bud[7], &bud[8], &bud[9],
48 for (i = 0; i < MAX_ORDER; i++)
53 for (i = 0; i < MAX_ORDER; i++) {
54 printf("% 5lld.%02lldM",
55 (buddy[i] * (1 << (i + 2))) >> 10,
56 (buddy[i] * (1 << (i + 2))) % 1024 * 100 / 1024);
57 tot += buddy[i] * (1 << (i + 2));
59 printf("% 5lldM\n", tot >> 10);