~ahs3/+junk/cq-qemu

« back to all changes in this revision

Viewing changes to tests/cris/check_mmap1.c

  • Committer: Al Stone
  • Date: 2012-02-09 01:17:20 UTC
  • Revision ID: albert.stone@canonical.com-20120209011720-tztl7ik3qayz80p4
first commit to bzr for qemu

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
#notarget: cris*-*-elf
 
3
*/
 
4
 
 
5
#define _GNU_SOURCE
 
6
#include <string.h>
 
7
#include <stdlib.h>
 
8
#include <stdio.h>
 
9
#include <sys/types.h>
 
10
#include <sys/stat.h>
 
11
#include <fcntl.h>
 
12
#include <unistd.h>
 
13
#include <sys/mman.h>
 
14
 
 
15
int main (int argc, char *argv[])
 
16
{
 
17
  int fd = open (argv[0], O_RDONLY);
 
18
  struct stat sb;
 
19
  int size;
 
20
  void *a;
 
21
  const char *str = "a string you'll only find in the program";
 
22
 
 
23
  if (fd == -1)
 
24
    {
 
25
      perror ("open");
 
26
      abort ();
 
27
    }
 
28
 
 
29
  if (fstat (fd, &sb) < 0)
 
30
    {
 
31
      perror ("fstat");
 
32
      abort ();
 
33
    }
 
34
 
 
35
  size = sb.st_size;
 
36
 
 
37
  /* We want to test mmapping a size that isn't exactly a page.  */
 
38
  if ((size & 8191) == 0)
 
39
    size--;
 
40
 
 
41
  a = mmap (NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
 
42
 
 
43
  if (memmem (a, size, str, strlen (str) + 1) == NULL)
 
44
    abort ();
 
45
 
 
46
  printf ("pass\n");
 
47
  exit (0);
 
48
}