xref: /openbsd-src/regress/sys/uvm/mmap_fixed/mmap_fixed.c (revision 38f718e5b60da5e425d01fc6376e87fe19c08fbf)
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