summaryrefslogtreecommitdiff
path: root/tools/re2c/examples/basemmap.c
blob: 3e5b037ad13226937cd648c7d0bcd3f7ca9628ef (plain)
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
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <string.h>

#ifndef	MAP_NORESERVE
#define	MAP_NORESERVE	0
#endif

volatile char ch;

main(){
    struct stat statbuf;
    uchar *buf;
    fstat(0, &statbuf);
    buf = mmap(NULL, statbuf.st_size, PROT_READ, MAP_SHARED|MAP_NORESERVE,
	0, 0);
    if(buf != (uchar*)(-1)){
	uchar *cur, *lim = &buf[statbuf.st_size];
	for(cur = buf; buf != lim; ++cur){
	    ch = *cur;
	}
	munmap(buf, statbuf.st_size);
    }
}