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