1/*
2 * Copyright 2008-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _SYS_MMAN_H
6#define _SYS_MMAN_H
7
8
9#include <sys/cdefs.h>
10#include <sys/types.h>
11
12
13/* memory protection for mmap() and others; assignment compatible with
14   B_{READ,WRITE,EXECUTE}_AREA */
15#define PROT_READ		0x01
16#define PROT_WRITE		0x02
17#define PROT_EXEC		0x04
18#define PROT_NONE		0x00
19
20/* mmap() flags */
21#define MAP_SHARED		0x01			/* changes are seen by others */
22#define MAP_PRIVATE		0x02			/* changes are only seen by caller */
23#define MAP_FIXED		0x04			/* require mapping to specified addr */
24#define MAP_ANONYMOUS	0x08			/* no underlying object */
25#define MAP_ANON		MAP_ANONYMOUS
26#define MAP_NORESERVE	0x10			/* don't commit memory */
27
28/* mmap() error return code */
29#define MAP_FAILED		((void*)-1)
30
31/* msync() flags */
32#define MS_ASYNC		0x01
33#define MS_SYNC			0x02
34#define MS_INVALIDATE	0x04
35
36/* madvise() values */
37#define MADV_NORMAL			1
38#define MADV_SEQUENTIAL		2
39#define MADV_RANDOM			3
40#define MADV_WILLNEED		4
41#define MADV_DONTNEED		5
42#define MADV_FREE			6
43
44/* posix_madvise() values */
45#define POSIX_MADV_NORMAL		MADV_NORMAL
46#define POSIX_MADV_SEQUENTIAL	MADV_SEQUENTIAL
47#define POSIX_MADV_RANDOM		MADV_RANDOM
48#define POSIX_MADV_WILLNEED		MADV_WILLNEED
49#define POSIX_MADV_DONTNEED		MADV_DONTNEED
50
51
52__BEGIN_DECLS
53
54void*	mmap(void* address, size_t length, int protection, int flags,
55			int fd, off_t offset);
56int		munmap(void* address, size_t length);
57
58int		mprotect(void* address, size_t length, int protection);
59int		msync(void* address, size_t length, int flags);
60
61int		madvise(void* address, size_t length, int advice);
62int		posix_madvise(void* address, size_t length, int advice);
63
64int		mlock(const void* address, size_t length);
65int		munlock(const void* address, size_t length);
66
67int		shm_open(const char* name, int openMode, mode_t permissions);
68int		shm_unlink(const char* name);
69
70__END_DECLS
71
72
73#endif	/* _SYS_MMAN_H */
74