}
tot = 0;
- for (i = 0; i < MAX_ORDER; i++) {
- printf("% 5lld.%02lldM",
- (buddy[i] * (1 << (i + 2))) >> 10,
- (buddy[i] * (1 << (i + 2))) % 1024 * 100 / 1024);
+ for (i = 0; i < MAX_ORDER; i++)
tot += buddy[i] * (1 << (i + 2));
- }
- printf("% 5lldM\n", tot >> 10);
+
+#define BUDDY_TO_MB(i) \
+ ((buddy[i] * (1 << ((i) + 2))) >> 10)
+#define BUDDY_TO_MB_REM(i, rem) \
+ ((buddy[i] * (1 << (i + 2))) % 1024 * rem / 1024)
+
+ printf("% 5lld.%03lldM"
+ "% 5lld.%03lldM"
+ "% 5lld.%03lldM"
+ "% 5lld.%03lldM"
+ "% 5lld.%03lldM"
+ "% 5lld.%03lldM"
+ "% 5lld.%02lldM"
+ "% 5lld.%01lldM"
+ "% 5lldM"
+ "% 5lldM"
+ "% 5lldM"
+ "% 5lldM\n",
+ BUDDY_TO_MB(0), BUDDY_TO_MB_REM(0, 1000),
+ BUDDY_TO_MB(1), BUDDY_TO_MB_REM(1, 1000),
+ BUDDY_TO_MB(2), BUDDY_TO_MB_REM(2, 1000),
+ BUDDY_TO_MB(3), BUDDY_TO_MB_REM(3, 1000),
+ BUDDY_TO_MB(4), BUDDY_TO_MB_REM(4, 1000),
+ BUDDY_TO_MB(5), BUDDY_TO_MB_REM(5, 1000),
+ BUDDY_TO_MB(6), BUDDY_TO_MB_REM(6, 100),
+ BUDDY_TO_MB(7), BUDDY_TO_MB_REM(7, 10),
+ BUDDY_TO_MB(8),
+ BUDDY_TO_MB(9),
+ BUDDY_TO_MB(10),
+ tot >> 10);
nanosleep(&sleep, NULL);