summaryrefslogtreecommitdiffstats
path: root/pintos-progos/tests/vm/mmap-read.c
diff options
context:
space:
mode:
Diffstat (limited to 'pintos-progos/tests/vm/mmap-read.c')
-rw-r--r--pintos-progos/tests/vm/mmap-read.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/pintos-progos/tests/vm/mmap-read.c b/pintos-progos/tests/vm/mmap-read.c
new file mode 100644
index 0000000..c0f23a1
--- /dev/null
+++ b/pintos-progos/tests/vm/mmap-read.c
@@ -0,0 +1,32 @@
1/* Uses a memory mapping to read a file. */
2
3#include <string.h>
4#include <syscall.h>
5#include "tests/vm/sample.inc"
6#include "tests/lib.h"
7#include "tests/main.h"
8
9void
10test_main (void)
11{
12 char *actual = (char *) 0x10000000;
13 int handle;
14 mapid_t map;
15 size_t i;
16
17 CHECK ((handle = open ("sample.txt")) > 1, "open \"sample.txt\"");
18 CHECK ((map = mmap (handle, actual)) != MAP_FAILED, "mmap \"sample.txt\"");
19
20 /* Check that data is correct. */
21 if (memcmp (actual, sample, strlen (sample)))
22 fail ("read of mmap'd file reported bad data");
23
24 /* Verify that data is followed by zeros. */
25 for (i = strlen (sample); i < 4096; i++)
26 if (actual[i] != 0)
27 fail ("byte %zu of mmap'd region has value %02hhx (should be 0)",
28 i, actual[i]);
29
30 munmap (map);
31 close (handle);
32}