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
19struct __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
60struct	shminfo {
61	int shmmax;
62	int shmmin;
63	int shmmni;
64	int shmseg;
65	int shmall;
66};
67struct 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