diff options
Diffstat (limited to 'newlib/testsuite/newlib.elix/tmmap.c')
-rw-r--r-- | newlib/testsuite/newlib.elix/tmmap.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/newlib/testsuite/newlib.elix/tmmap.c b/newlib/testsuite/newlib.elix/tmmap.c new file mode 100644 index 000000000..d930c96b1 --- /dev/null +++ b/newlib/testsuite/newlib.elix/tmmap.c @@ -0,0 +1,42 @@ +#include <sys/types.h> +#include <sys/mman.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include "check.h" + +int main() +{ + int fd; + char *x; + FILE *fp; + char buf[40]; + + fd = open("my.file", O_CREAT | O_TRUNC | O_RDWR, 0644); + + CHECK (fd != -1); + + CHECK (write (fd, "abcdefgh", 8) == 8); + + x = (char *)mmap (0, 20, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + + CHECK (x != MAP_FAILED); + + x[3] = 'j'; + + CHECK (munmap (x, 20) == 0); + + CHECK (close(fd) != -1); + + fp = fopen("my.file","r"); + + CHECK (fp != NULL); + + CHECK (fread(buf, 1, 20, fp) == 8); + + CHECK (strncmp (buf, "abcjefgh", 8) == 0); + + exit (0); +} + |