3 #include "tests/vm/sample.inc"
5 #include "tests/main.h"
10 static const char overwrite[] = "Now is the time for all good...";
11 static char buffer[sizeof sample - 1];
12 char *actual = (char *) 0x54321000;
16 /* Open file, map, verify data. */
17 CHECK ((handle = open ("sample.txt")) > 1, "open \"sample.txt\"");
18 CHECK ((map = mmap (handle, actual)) != MAP_FAILED, "mmap \"sample.txt\"");
19 if (memcmp (actual, sample, strlen (sample)))
20 fail ("read of mmap'd file reported bad data");
23 CHECK (write (handle, overwrite, strlen (overwrite))
24 == (int) strlen (overwrite),
25 "write \"sample.txt\"");
27 /* Close mapping. Data should not be written back, because we
28 didn't modify it via the mapping. */
29 msg ("munmap \"sample.txt\"");
33 msg ("seek \"sample.txt\"");
35 CHECK (read (handle, buffer, sizeof buffer) == sizeof buffer,
36 "read \"sample.txt\"");
38 /* Verify that file overwrite worked. */
39 if (memcmp (buffer, overwrite, strlen (overwrite))
40 || memcmp (buffer + strlen (overwrite), sample + strlen (overwrite),
41 strlen (sample) - strlen (overwrite)))
43 if (!memcmp (buffer, sample, strlen (sample)))
44 fail ("munmap wrote back clean page");
46 fail ("read surprising data from file");
49 msg ("file change was retained after munmap");