8 #if defined HAVE_STDINT_H
12 #if defined HAVE_INTTYPES_H
18 #define CHECK(x) !(x) ? abort() : 0
20 /* Define __UNUSED__ that also other compilers than gcc can run the tests. */
23 #define __UNUSED__ __attribute__((__unused__))
28 /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
31 # undef HAVE_MMAP_DEV_ZERO
33 # include <sys/mman.h>
35 # define MAP_FAILED -1
37 # if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
38 # define MAP_ANONYMOUS MAP_ANON
44 #ifdef HAVE_MMAP_DEV_ZERO
46 # include <sys/mman.h>
48 # define MAP_FAILED -1
63 /* Tru64 UNIX kludge. */
64 #if defined(__alpha__) && defined(__osf__)
65 /* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */
75 /* PA HP-UX kludge. */
76 #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
80 /* Solaris < 10 kludge. */
81 #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
82 #if defined(__arch64__) || defined (__x86_64__)
91 allocate_mmap (size_t size)
94 #if defined (HAVE_MMAP_DEV_ZERO)
95 static int dev_zero_fd = -1;
98 #ifdef HAVE_MMAP_DEV_ZERO
99 if (dev_zero_fd == -1)
101 dev_zero_fd = open ("/dev/zero", O_RDONLY);
102 if (dev_zero_fd == -1)
104 perror ("open /dev/zero: %m");
111 #ifdef HAVE_MMAP_ANON
112 page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
113 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
115 #ifdef HAVE_MMAP_DEV_ZERO
116 page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
117 MAP_PRIVATE, dev_zero_fd, 0);
120 if (page == (void *) MAP_FAILED)
122 perror ("virtual memory exhausted");