Home | History | Annotate | Download | only in amd64-linux
      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