X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fcommon%2Fvmfill.c;h=d44ad50469afa082baaa4ddabb9438f6599ba1a5;hb=54c15bc45a8721b8482552586a50b2548271a3b4;hp=86a218d15d9884799ea92655424f36fe1b86a463;hpb=cfa23cc1bd01f5c44d7746b8b1839f84d5e1b6eb;p=libc-test diff --git a/src/common/vmfill.c b/src/common/vmfill.c index 86a218d..d44ad50 100644 --- a/src/common/vmfill.c +++ b/src/common/vmfill.c @@ -2,10 +2,14 @@ #include #include #include +#include #include "test.h" #ifndef PAGE_SIZE #define PAGE_SIZE sysconf(_SC_PAGE_SIZE) #endif +#ifndef MAP_ANONYMOUS + #define MAP_ANONYMOUS 0 +#endif /* max mmap size, *start is the largest power-of-2 size considered */ static size_t mmax(int fd, size_t *start) @@ -14,7 +18,7 @@ static size_t mmax(int fd, size_t *start) void *p; for (i=n=*start; i>=PAGE_SIZE; i/=2) { - if ((p=mmap(0, n, PROT_NONE, MAP_PRIVATE, fd, 0)) == MAP_FAILED) { + if ((p=mmap(0, n, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, fd, 0)) == MAP_FAILED) { n -= i/2; } else { munmap(p, n); @@ -33,7 +37,7 @@ the return value is the number of mappings or -1 on failure. */ int t_vmfill(void **p, size_t *n, int len) { - int fd = open("/dev/zero", O_RDWR); + int fd = MAP_ANONYMOUS ? -1 : open("/dev/zero", O_RDWR); size_t start = SIZE_MAX/2 + 1; size_t m; void *q; @@ -43,7 +47,7 @@ int t_vmfill(void **p, size_t *n, int len) m = mmax(fd, &start); if (!m) break; - q = mmap(0, m, PROT_NONE, MAP_PRIVATE, fd, 0); + q = mmap(0, m, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, fd, 0); if (q == MAP_FAILED) return -1; if (i < len) {