From: Matt Mullins Date: Sat, 21 Sep 2013 03:37:56 +0000 (-0700) Subject: Keep a count of how many pages allocated X-Git-Url: http://git.mmlx.us/?a=commitdiff_plain;h=93fcb3c831c0cc09895d3f68079d8255f30e01cc;p=mmap_everything.git Keep a count of how many pages allocated --- diff --git a/mmap_everything.c b/mmap_everything.c index 2940a11..bc52ec6 100644 --- a/mmap_everything.c +++ b/mmap_everything.c @@ -4,21 +4,41 @@ #include #include +#define MAX_BITS (sizeof(size_t) * CHAR_BIT - 1) + int main() { pid_t pid = getpid(); printf("My pid is: %d\n", pid); - size_t size = ((size_t)1 << (sizeof(size_t) * CHAR_BIT - 1)); + size_t allocated[MAX_BITS+1]; + for (size_t i = 0; i <= MAX_BITS; ++i) { + allocated[i] = 0; + } + + size_t size = ((size_t)1 << MAX_BITS); + size_t bit = MAX_BITS; void *p; do { do { p = mmap(0, size, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - } while (p != MAP_FAILED); + if (p != MAP_FAILED) { + allocated[bit]++; + } else { + break; + } + } while (1); size >>= 1; + bit--; } while (size); - printf("Mapped at: %p\n", p); + + printf("Mapped the following sizes:\n"); + for (size_t i = 0; i <= MAX_BITS; ++i) { + if (allocated[i] != 0) { + printf("%zu\t%zu\n", i, allocated[i]); + } + } getchar(); }