xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/shm.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _LINUX_SHM_H_
2*53ee8cc1Swenshuai.xi #define _LINUX_SHM_H_
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include <linux/ipc.h>
5*53ee8cc1Swenshuai.xi #include <linux/errno.h>
6*53ee8cc1Swenshuai.xi #include <unistd.h>
7*53ee8cc1Swenshuai.xi 
8*53ee8cc1Swenshuai.xi /*
9*53ee8cc1Swenshuai.xi  * SHMMAX, SHMMNI and SHMALL are upper limits are defaults which can
10*53ee8cc1Swenshuai.xi  * be increased by sysctl
11*53ee8cc1Swenshuai.xi  */
12*53ee8cc1Swenshuai.xi 
13*53ee8cc1Swenshuai.xi #define SHMMAX 0x2000000		 /* max shared seg size (bytes) */
14*53ee8cc1Swenshuai.xi #define SHMMIN 1			 /* min shared seg size (bytes) */
15*53ee8cc1Swenshuai.xi #define SHMMNI 4096			 /* max num of segs system wide */
16*53ee8cc1Swenshuai.xi #define SHMALL (SHMMAX/getpagesize()*(SHMMNI/16))
17*53ee8cc1Swenshuai.xi #define SHMSEG SHMMNI			 /* max shared segs per process */
18*53ee8cc1Swenshuai.xi 
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi /* Obsolete, used only for backwards compatibility and libc5 compiles */
21*53ee8cc1Swenshuai.xi struct shmid_ds {
22*53ee8cc1Swenshuai.xi 	struct ipc_perm		shm_perm;	/* operation perms */
23*53ee8cc1Swenshuai.xi 	int			shm_segsz;	/* size of segment (bytes) */
24*53ee8cc1Swenshuai.xi 	__kernel_time_t		shm_atime;	/* last attach time */
25*53ee8cc1Swenshuai.xi 	__kernel_time_t		shm_dtime;	/* last detach time */
26*53ee8cc1Swenshuai.xi 	__kernel_time_t		shm_ctime;	/* last change time */
27*53ee8cc1Swenshuai.xi 	__kernel_ipc_pid_t	shm_cpid;	/* pid of creator */
28*53ee8cc1Swenshuai.xi 	__kernel_ipc_pid_t	shm_lpid;	/* pid of last operator */
29*53ee8cc1Swenshuai.xi 	unsigned short		shm_nattch;	/* no. of current attaches */
30*53ee8cc1Swenshuai.xi 	unsigned short 		shm_unused;	/* compatibility */
31*53ee8cc1Swenshuai.xi 	void 			*shm_unused2;	/* ditto - used by DIPC */
32*53ee8cc1Swenshuai.xi 	void			*shm_unused3;	/* unused */
33*53ee8cc1Swenshuai.xi };
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi /* Include the definition of shmid64_ds and shminfo64 */
36*53ee8cc1Swenshuai.xi #include <asm/shmbuf.h>
37*53ee8cc1Swenshuai.xi 
38*53ee8cc1Swenshuai.xi /* permission flag for shmget */
39*53ee8cc1Swenshuai.xi #define SHM_R		0400	/* or S_IRUGO from <linux/stat.h> */
40*53ee8cc1Swenshuai.xi #define SHM_W		0200	/* or S_IWUGO from <linux/stat.h> */
41*53ee8cc1Swenshuai.xi 
42*53ee8cc1Swenshuai.xi /* mode for attach */
43*53ee8cc1Swenshuai.xi #define	SHM_RDONLY	010000	/* read-only access */
44*53ee8cc1Swenshuai.xi #define	SHM_RND		020000	/* round attach address to SHMLBA boundary */
45*53ee8cc1Swenshuai.xi #define	SHM_REMAP	040000	/* take-over region on attach */
46*53ee8cc1Swenshuai.xi #define	SHM_EXEC	0100000	/* execution access */
47*53ee8cc1Swenshuai.xi 
48*53ee8cc1Swenshuai.xi /* super user shmctl commands */
49*53ee8cc1Swenshuai.xi #define SHM_LOCK 	11
50*53ee8cc1Swenshuai.xi #define SHM_UNLOCK 	12
51*53ee8cc1Swenshuai.xi 
52*53ee8cc1Swenshuai.xi /* ipcs ctl commands */
53*53ee8cc1Swenshuai.xi #define SHM_STAT 	13
54*53ee8cc1Swenshuai.xi #define SHM_INFO 	14
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi /* Obsolete, used only for backwards compatibility */
57*53ee8cc1Swenshuai.xi struct	shminfo {
58*53ee8cc1Swenshuai.xi 	int shmmax;
59*53ee8cc1Swenshuai.xi 	int shmmin;
60*53ee8cc1Swenshuai.xi 	int shmmni;
61*53ee8cc1Swenshuai.xi 	int shmseg;
62*53ee8cc1Swenshuai.xi 	int shmall;
63*53ee8cc1Swenshuai.xi };
64*53ee8cc1Swenshuai.xi 
65*53ee8cc1Swenshuai.xi struct shm_info {
66*53ee8cc1Swenshuai.xi 	int used_ids;
67*53ee8cc1Swenshuai.xi 	unsigned long shm_tot;	/* total allocated shm */
68*53ee8cc1Swenshuai.xi 	unsigned long shm_rss;	/* total resident shm */
69*53ee8cc1Swenshuai.xi 	unsigned long shm_swp;	/* total swapped shm */
70*53ee8cc1Swenshuai.xi 	unsigned long swap_attempts;
71*53ee8cc1Swenshuai.xi 	unsigned long swap_successes;
72*53ee8cc1Swenshuai.xi };
73*53ee8cc1Swenshuai.xi 
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi #endif /* _LINUX_SHM_H_ */
76