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