1*38f718e5Sguenther /* $OpenBSD: mmap_fixed.c,v 1.3 2016/08/27 04:35:19 guenther Exp $ */
2457aafe8Skurt
3457aafe8Skurt /*
4457aafe8Skurt * Public domain. 2006, Kurt Miller <kurt@intricatesoftware.com>
5457aafe8Skurt */
6457aafe8Skurt
7457aafe8Skurt #include <sys/types.h>
8457aafe8Skurt #include <sys/mman.h>
9457aafe8Skurt #include <err.h>
10*38f718e5Sguenther #include <stdio.h>
11457aafe8Skurt
12457aafe8Skurt #define MEM_SIZE 1024*1024
13457aafe8Skurt
14457aafe8Skurt /*
15457aafe8Skurt * Repetitively call mmap with MMAP_FIXED on the same region of memory
16457aafe8Skurt * to ensure process datasize is properly calculated.
17457aafe8Skurt */
18457aafe8Skurt
19457aafe8Skurt int
main(void)20457aafe8Skurt main(void)
21457aafe8Skurt {
22457aafe8Skurt void *mem_area;
23457aafe8Skurt int i;
24457aafe8Skurt
25457aafe8Skurt mem_area = mmap(0, MEM_SIZE, PROT_NONE, MAP_ANON, -1, 0);
26457aafe8Skurt
27457aafe8Skurt for (i = 0; i < 20000; i++) {
2858c32fe1Sderaadt if (mmap(mem_area, MEM_SIZE, PROT_READ|PROT_WRITE,
29457aafe8Skurt MAP_ANON|MAP_FIXED, -1, 0) == MAP_FAILED)
30457aafe8Skurt err(1, NULL);
31457aafe8Skurt }
32457aafe8Skurt
33457aafe8Skurt return (0);
34457aafe8Skurt }
35