From e85646875f4d615d7ce30f0f4e8cae06d0d4e73e Mon Sep 17 00:00:00 2001 From: Andrei Vagin Date: Thu, 2 Nov 2017 00:40:35 +0300 Subject: [PATCH] zdtm/maps006: modify test so that file and anon vma-s are mixed Signed-off-by: Andrei Vagin --- test/zdtm/static/maps06.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/test/zdtm/static/maps06.c b/test/zdtm/static/maps06.c index 49602e446..df57fdb40 100644 --- a/test/zdtm/static/maps06.c +++ b/test/zdtm/static/maps06.c @@ -10,8 +10,11 @@ const char *test_author = "Andrei Vagin "; char *filename; TEST_OPTION(filename, string, "file name", 1); +#define TEST_SIZE 10240 + int main(int argc, char ** argv) { + void *start; int fd, i; test_init(argc, argv); @@ -22,17 +25,40 @@ int main(int argc, char ** argv) ftruncate(fd, 4096); - for (i = 0; i < 1024; i++) { - if (mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, fd, 0) == MAP_FAILED) + start = mmap(0, 4096 * TEST_SIZE * 4, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + if (start == MAP_FAILED) + return 1; + + for (i = 0; i < TEST_SIZE; i++) { + int *addr; + addr = mmap(start + i * 3 * 4096, 4096, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FILE | MAP_FIXED, fd, 0); + if (addr == MAP_FAILED) return 1; - if (mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) == MAP_FAILED) + addr[0] = i * 2; + addr = mmap(start + (i * 3 + 1) * 4096, 4096, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + if (addr == MAP_FAILED) return 1; + addr[0] = i; } test_daemon(); test_waitsig(); + for (i = 0; i < TEST_SIZE; i++) { + int *addr; + addr = start + i * 3 * 4096;; + if (addr[0] != i * 2) + fail(); + addr = start + (i * 3 + 1) * 4096; + if (addr[0] != i) + fail(); + } + pass(); return 0;