1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef _UAPI_LINUX_SHM_H_
7 #define _UAPI_LINUX_SHM_H_
8 #include <linux/ipc.h>
9 #include <linux/errno.h>
10 #include <asm-generic/hugetlb_encode.h>
11 #ifndef __KERNEL__
12 #include <unistd.h>
13 #endif
14 #define SHMMIN 1
15 #define SHMMNI 4096
16 #define SHMMAX (ULONG_MAX - (1UL << 24))
17 #define SHMALL (ULONG_MAX - (1UL << 24))
18 #define SHMSEG SHMMNI
19 struct __kernel_legacy_shmid_ds {
20 	struct __kernel_legacy_ipc_perm		shm_perm;
21 	int			shm_segsz;
22 	__kernel_time_t		shm_atime;
23 	__kernel_time_t		shm_dtime;
24 	__kernel_time_t		shm_ctime;
25 	__kernel_ipc_pid_t	shm_cpid;
26 	__kernel_ipc_pid_t	shm_lpid;
27 	unsigned short		shm_nattch;
28 	unsigned short 		shm_unused;
29 	void 			*shm_unused2;
30 	void			*shm_unused3;
31 };
32 #include <asm/shmbuf.h>
33 #define SHM_R		0400
34 #define SHM_W		0200
35 #define SHM_HUGETLB	04000
36 #define SHM_NORESERVE	010000
37 #define SHM_HUGE_SHIFT	HUGETLB_FLAG_ENCODE_SHIFT
38 #define SHM_HUGE_MASK	HUGETLB_FLAG_ENCODE_MASK
39 #define SHM_HUGE_64KB	HUGETLB_FLAG_ENCODE_64KB
40 #define SHM_HUGE_512KB	HUGETLB_FLAG_ENCODE_512KB
41 #define SHM_HUGE_1MB	HUGETLB_FLAG_ENCODE_1MB
42 #define SHM_HUGE_2MB	HUGETLB_FLAG_ENCODE_2MB
43 #define SHM_HUGE_8MB	HUGETLB_FLAG_ENCODE_8MB
44 #define SHM_HUGE_16MB	HUGETLB_FLAG_ENCODE_16MB
45 #define SHM_HUGE_32MB	HUGETLB_FLAG_ENCODE_32MB
46 #define SHM_HUGE_256MB	HUGETLB_FLAG_ENCODE_256MB
47 #define SHM_HUGE_512MB	HUGETLB_FLAG_ENCODE_512MB
48 #define SHM_HUGE_1GB	HUGETLB_FLAG_ENCODE_1GB
49 #define SHM_HUGE_2GB	HUGETLB_FLAG_ENCODE_2GB
50 #define SHM_HUGE_16GB	HUGETLB_FLAG_ENCODE_16GB
51 #define	SHM_RDONLY	010000
52 #define	SHM_RND		020000
53 #define	SHM_REMAP	040000
54 #define	SHM_EXEC	0100000
55 #define SHM_LOCK 	11
56 #define SHM_UNLOCK 	12
57 #define SHM_STAT	13
58 #define SHM_INFO	14
59 #define SHM_STAT_ANY    15
60 struct	shminfo {
61 	int shmmax;
62 	int shmmin;
63 	int shmmni;
64 	int shmseg;
65 	int shmall;
66 };
67 struct shm_info {
68 	int used_ids;
69 	__kernel_ulong_t shm_tot;
70 	__kernel_ulong_t shm_rss;
71 	__kernel_ulong_t shm_swp;
72 	__kernel_ulong_t swap_attempts;
73 	__kernel_ulong_t swap_successes;
74 };
75 #endif
76