a2b5a10e35a6869649ea7aa090f17c22253f39b5
[pintos-anon] / grading / vm / mmap-twice.c
1 #include <stdio.h>
2 #include <string.h>
3 #ifdef PINTOS
4 #include <syscall.h>
5 #else
6 #include "posix-compat.h"
7 #endif
8 #include "sample.inc"
9
10 int
11 main (void) 
12 {
13   char *actual[2] = {(char *) 0x10000000, (char *) 0x20000000};
14   size_t i;
15   int fd[2];
16
17   printf ("(mmap-twice) begin\n");
18
19   for (i = 0; i < 2; i++) 
20     {
21       fd[i] = open ("sample.txt");
22       if (fd[i] < 0) 
23         {
24           printf ("(mmap-twice) open() #%zu failed\n", i);
25           return 1;
26         }
27       if (mmap (fd[i], actual[i]) == MAP_FAILED)
28         {
29           printf ("(mmap-twice) mmap() #%zu failed\n", i);
30           return 1; 
31         }
32     }
33
34   for (i = 0; i < 2; i++)
35     if (memcmp (actual[i], sample, strlen (sample)))
36       {
37         printf ("(mmap-twice) read of mmap'd file %zu reported bad data\n",
38                 i);
39         return 1;
40       }
41
42   printf ("(mmap-twice) end\n");
43
44   return 0;
45 }