1 #include <stdio.h>
2 #include "tests/sys_mman.h"
3 #include <stdlib.h>
4 #include <unistd.h>
5 
6 int main()
7 {
8 
9    void *first = NULL;
10    void *last;
11    void *res;
12 
13    while (1) {
14       res = mmap (NULL, 64 * 1024,
15                   PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT,
16                   -1, 0);
17       if (first == NULL) {
18          first = res;
19          if (first == (void *)-1) {
20             perror ("first mmap");
21             exit (1);
22          }
23          fprintf(stderr, "first mmap : %p\n", first);
24       }
25       if (res == (void *)-1) {
26          fprintf(stderr, "last mmap ok: %p\n", last);
27          break;
28       }
29       last = res;
30    }
31 
32    /* And now, retry without MAP_32BIT */
33    res = mmap (NULL, 64 * 1024,
34                PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
35                -1, 0);
36    if (res == (void *)-1) {
37       perror ("retry mmap");
38       exit (1);
39    }
40    fprintf(stderr, "retry mmap ok: %p\n", res);
41 
42    return 0;
43 }
44