122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef _UAPI_LINUX_SHM_H_
722851890Sopenharmony_ci#define _UAPI_LINUX_SHM_H_
822851890Sopenharmony_ci#include <linux/ipc.h>
922851890Sopenharmony_ci#include <linux/errno.h>
1022851890Sopenharmony_ci#include <asm-generic/hugetlb_encode.h>
1122851890Sopenharmony_ci#ifndef __KERNEL__
1222851890Sopenharmony_ci#include <unistd.h>
1322851890Sopenharmony_ci#endif
1422851890Sopenharmony_ci#define SHMMIN 1
1522851890Sopenharmony_ci#define SHMMNI 4096
1622851890Sopenharmony_ci#define SHMMAX (ULONG_MAX - (1UL << 24))
1722851890Sopenharmony_ci#define SHMALL (ULONG_MAX - (1UL << 24))
1822851890Sopenharmony_ci#define SHMSEG SHMMNI
1922851890Sopenharmony_cistruct __kernel_legacy_shmid_ds {
2022851890Sopenharmony_ci	struct __kernel_legacy_ipc_perm		shm_perm;
2122851890Sopenharmony_ci	int			shm_segsz;
2222851890Sopenharmony_ci	__kernel_time_t		shm_atime;
2322851890Sopenharmony_ci	__kernel_time_t		shm_dtime;
2422851890Sopenharmony_ci	__kernel_time_t		shm_ctime;
2522851890Sopenharmony_ci	__kernel_ipc_pid_t	shm_cpid;
2622851890Sopenharmony_ci	__kernel_ipc_pid_t	shm_lpid;
2722851890Sopenharmony_ci	unsigned short		shm_nattch;
2822851890Sopenharmony_ci	unsigned short 		shm_unused;
2922851890Sopenharmony_ci	void 			*shm_unused2;
3022851890Sopenharmony_ci	void			*shm_unused3;
3122851890Sopenharmony_ci};
3222851890Sopenharmony_ci#include <asm/shmbuf.h>
3322851890Sopenharmony_ci#define SHM_R		0400
3422851890Sopenharmony_ci#define SHM_W		0200
3522851890Sopenharmony_ci#define SHM_HUGETLB	04000
3622851890Sopenharmony_ci#define SHM_NORESERVE	010000
3722851890Sopenharmony_ci#define SHM_HUGE_SHIFT	HUGETLB_FLAG_ENCODE_SHIFT
3822851890Sopenharmony_ci#define SHM_HUGE_MASK	HUGETLB_FLAG_ENCODE_MASK
3922851890Sopenharmony_ci#define SHM_HUGE_64KB	HUGETLB_FLAG_ENCODE_64KB
4022851890Sopenharmony_ci#define SHM_HUGE_512KB	HUGETLB_FLAG_ENCODE_512KB
4122851890Sopenharmony_ci#define SHM_HUGE_1MB	HUGETLB_FLAG_ENCODE_1MB
4222851890Sopenharmony_ci#define SHM_HUGE_2MB	HUGETLB_FLAG_ENCODE_2MB
4322851890Sopenharmony_ci#define SHM_HUGE_8MB	HUGETLB_FLAG_ENCODE_8MB
4422851890Sopenharmony_ci#define SHM_HUGE_16MB	HUGETLB_FLAG_ENCODE_16MB
4522851890Sopenharmony_ci#define SHM_HUGE_32MB	HUGETLB_FLAG_ENCODE_32MB
4622851890Sopenharmony_ci#define SHM_HUGE_256MB	HUGETLB_FLAG_ENCODE_256MB
4722851890Sopenharmony_ci#define SHM_HUGE_512MB	HUGETLB_FLAG_ENCODE_512MB
4822851890Sopenharmony_ci#define SHM_HUGE_1GB	HUGETLB_FLAG_ENCODE_1GB
4922851890Sopenharmony_ci#define SHM_HUGE_2GB	HUGETLB_FLAG_ENCODE_2GB
5022851890Sopenharmony_ci#define SHM_HUGE_16GB	HUGETLB_FLAG_ENCODE_16GB
5122851890Sopenharmony_ci#define	SHM_RDONLY	010000
5222851890Sopenharmony_ci#define	SHM_RND		020000
5322851890Sopenharmony_ci#define	SHM_REMAP	040000
5422851890Sopenharmony_ci#define	SHM_EXEC	0100000
5522851890Sopenharmony_ci#define SHM_LOCK 	11
5622851890Sopenharmony_ci#define SHM_UNLOCK 	12
5722851890Sopenharmony_ci#define SHM_STAT	13
5822851890Sopenharmony_ci#define SHM_INFO	14
5922851890Sopenharmony_ci#define SHM_STAT_ANY    15
6022851890Sopenharmony_cistruct	shminfo {
6122851890Sopenharmony_ci	int shmmax;
6222851890Sopenharmony_ci	int shmmin;
6322851890Sopenharmony_ci	int shmmni;
6422851890Sopenharmony_ci	int shmseg;
6522851890Sopenharmony_ci	int shmall;
6622851890Sopenharmony_ci};
6722851890Sopenharmony_cistruct shm_info {
6822851890Sopenharmony_ci	int used_ids;
6922851890Sopenharmony_ci	__kernel_ulong_t shm_tot;
7022851890Sopenharmony_ci	__kernel_ulong_t shm_rss;
7122851890Sopenharmony_ci	__kernel_ulong_t shm_swp;
7222851890Sopenharmony_ci	__kernel_ulong_t swap_attempts;
7322851890Sopenharmony_ci	__kernel_ulong_t swap_successes;
7422851890Sopenharmony_ci};
7522851890Sopenharmony_ci#endif
76