summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.syscall/mmap.c
blob: 75563854fb89535882bae446c2ada9db463681f7 (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* COVERAGE: mmap2 munmap msync mlock mlockall munlock munlockall fstat open close */
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
	int fd, ret;
	struct stat fs;
	void * r;

	/* create a file with something in it */
	fd = creat("foobar",S_IREAD|S_IWRITE);
	// open ("foobar", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 4
	lseek(fd, 1024, SEEK_SET);
	write(fd, "abcdef", 6);
	close(fd);
	// close (4) = 0

	fd = open("foobar", O_RDONLY);
	// open ("foobar", O_RDONLY) = 4

	/* stat for file size */
	ret = fstat(fd, &fs);
	// fstat (4, XXXX) = 0

	r = mmap(NULL, fs.st_size, PROT_READ, MAP_SHARED, fd, 0);
	// mmap[2]* (XXXX, 1030, PROT_READ, MAP_SHARED, 4, XXXX) = XXXX

	close(fd);

	mlock(r, fs.st_size);
	// mlock (XXXX, 1030) = 0

	msync(r, fs.st_size, MS_SYNC);	
	// msync (XXXX, 1030, MS_SYNC) = 0

	munlock(r, fs.st_size);
	// munlock (XXXX, 1030) = 0

	mlockall(MCL_CURRENT);
	// mlockall (MCL_CURRENT) = 

	munlockall();
	// munlockall () = 0

	munmap(r, fs.st_size);
	// munmap (XXXX, 1030) = 0

	return 0;
}