/* Maps a file into memory and runs child-inherit to verify that mappings are not inherited. */ #include #include #include "tests/vm/sample.inc" #include "tests/lib.h" #include "tests/main.h" void test_main (void) { char *actual = (char *) 0x54321000; int handle; pid_t child; /* Open file, map, verify data. */ CHECK ((handle = open ("sample.txt")) > 1, "open \"sample.txt\""); CHECK (mmap (handle, actual) != MAP_FAILED, "mmap \"sample.txt\""); if (memcmp (actual, sample, strlen (sample))) fail ("read of mmap'd file reported bad data"); /* Spawn child and wait. */ CHECK ((child = exec ("child-inherit")) != -1, "exec \"child-inherit\""); quiet = true; CHECK (wait (child) == -1, "wait for child (should return -1)"); quiet = false; /* Verify data again. */ CHECK (!memcmp (actual, sample, strlen (sample)), "checking that mmap'd file still has same data"); }