183c822a12f073313842fcdc864e6cbd3d2269a9
[pintos-anon] / grading / vm / mmap-write.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 #define ACTUAL ((void *) 0x10000000)
11
12 int
13 main (void) 
14 {
15   int fd;
16   char buf[1024];
17
18   printf ("(mmap-write) begin\n");
19
20   /* Write file via mmap. */
21   if (!create ("sample.txt", strlen (sample)))
22     {
23       printf ("(mmap-write) create() failed\n");
24       return 1;
25     }
26   
27   fd = open ("sample.txt");
28   if (fd < 0) 
29     {
30       printf ("(mmap-write) open() failed\n");
31       return 1;
32     }
33
34   if (!mmap (fd, ACTUAL, strlen (sample)))
35     {
36       printf ("(mmap-write) mmap() failed\n");
37       return 1;
38     }
39   memcpy (ACTUAL, sample, strlen (sample));
40   munmap (ACTUAL, strlen (sample));
41
42   /* Read back via read(). */
43   read (fd, buf, strlen (sample));
44   if (memcmp (ACTUAL, sample, strlen (sample)))
45     {
46       printf ("(mmap-write) read of mmap-written file reported bad data\n");
47       return 1;
48     }
49   close (fd);
50
51   /* Done. */
52   printf ("(mmap-write) end\n");
53
54   return 0;
55 }