xref: /openbsd/regress/sys/uvm/mmap_size/mmap_size.c (revision 404b540a)
1 /*	$OpenBSD: mmap_size.c,v 1.2 2006/03/14 09:31:51 mickey Exp $	*/
2 
3 /*
4  * Public domain. 2005, Otto Moerbeek <otto@drijf.net>
5  */
6 
7 #include <sys/types.h>
8 #include <sys/mman.h>
9 #include <err.h>
10 #include <limits.h>
11 #include <stdlib.h>
12 #include <stdio.h>
13 
14 void
15 f(size_t sz)
16 {
17 	char *p;
18 	p = mmap(NULL, sz, PROT_READ|PROT_WRITE,
19 	    MAP_ANON|MAP_PRIVATE, -1, (off_t)0);
20 
21 	if (p == MAP_FAILED)
22 		return;
23 
24 	if (sz > 0) {
25 		p[0] = 0;
26 		p[sz / 2] = 0;
27 		p[sz - 1] = 0;
28 	}
29 	munmap(p, sz);
30 }
31 
32 int
33 main()
34 {
35 	size_t i;
36 
37 	for (i = 0; i < 0x2000; i += 0x100) {
38 		f(i);
39 		f(-i);
40 		f(SIZE_T_MAX/2 - 0x1000);
41 	}
42 	return (0);
43 }
44