OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libffi/] [testsuite/] [libffi.call/] [ffitest.h] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
#include <stdlib.h>
2
#include <stdio.h>
3
#include <string.h>
4
#include <fcntl.h>
5
#include <ffi.h>
6
#include "fficonfig.h"
7
 
8
#define MAX_ARGS 256
9
 
10
#define CHECK(x) !(x) ? abort() : 0
11
 
12
 
13
/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
14
   file open.  */
15
#ifdef HAVE_MMAP_ANON
16
# undef HAVE_MMAP_DEV_ZERO
17
 
18
# include <sys/mman.h>
19
# ifndef MAP_FAILED
20
#  define MAP_FAILED -1
21
# endif
22
# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
23
#  define MAP_ANONYMOUS MAP_ANON
24
# endif
25
# define USING_MMAP
26
 
27
#endif
28
 
29
#ifdef HAVE_MMAP_DEV_ZERO
30
 
31
# include <sys/mman.h>
32
# ifndef MAP_FAILED
33
#  define MAP_FAILED -1
34
# endif
35
# define USING_MMAP
36
 
37
#endif
38
 
39
#ifdef USING_MMAP
40
static inline void *
41
allocate_mmap (size_t size)
42
{
43
  void *page;
44
#if defined (HAVE_MMAP_DEV_ZERO)
45
  static int dev_zero_fd = -1;
46
#endif
47
 
48
#ifdef HAVE_MMAP_DEV_ZERO
49
  if (dev_zero_fd == -1)
50
    {
51
      dev_zero_fd = open ("/dev/zero", O_RDONLY);
52
      if (dev_zero_fd == -1)
53
        {
54
          perror ("open /dev/zero: %m");
55
          exit (1);
56
        }
57
    }
58
#endif
59
 
60
 
61
#ifdef HAVE_MMAP_ANON
62
  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
63
               MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
64
#endif
65
#ifdef HAVE_MMAP_DEV_ZERO
66
  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
67
               MAP_PRIVATE, dev_zero_fd, 0);
68
#endif
69
 
70
  if (page == (void *) MAP_FAILED)
71
    {
72
      perror ("virtual memory exhausted");
73
      exit (1);
74
    }
75
 
76
  return page;
77
}
78
 
79
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.