#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
+#include <time.h>
#define MAX_ORDER 11
{
long long int buddy[MAX_ORDER], bud[MAX_ORDER], tot;
long int i;
+ double delay = 1;
FILE *file;
char str[1024], *s;
+ int ret = 0;
+ struct timespec sleep;
+
+ if (argc > 1)
+ ret = sscanf(argv[1], "%lf", &delay);
+
+ sleep.tv_sec = (time_t)delay;
+ sleep.tv_nsec = ((long)(delay * 1000 * 1000 * 1000) %
+ (1000l * 1000l * 1000l));
while (1)
{
for (i = 0; i < MAX_ORDER; i++)
buddy[i] += bud[i];
}
+ fclose(file);
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);
- sleep(1);
- fclose(file);
+#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);
}
return 0;
}