xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/sem.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _LINUX_SEM_H
2*53ee8cc1Swenshuai.xi #define _LINUX_SEM_H
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include <linux/ipc.h>
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi /* semop flags */
7*53ee8cc1Swenshuai.xi #define SEM_UNDO        0x1000  /* undo the operation on exit */
8*53ee8cc1Swenshuai.xi 
9*53ee8cc1Swenshuai.xi /* semctl Command Definitions. */
10*53ee8cc1Swenshuai.xi #define GETPID  11       /* get sempid */
11*53ee8cc1Swenshuai.xi #define GETVAL  12       /* get semval */
12*53ee8cc1Swenshuai.xi #define GETALL  13       /* get all semval's */
13*53ee8cc1Swenshuai.xi #define GETNCNT 14       /* get semncnt */
14*53ee8cc1Swenshuai.xi #define GETZCNT 15       /* get semzcnt */
15*53ee8cc1Swenshuai.xi #define SETVAL  16       /* set semval */
16*53ee8cc1Swenshuai.xi #define SETALL  17       /* set all semval's */
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi /* ipcs ctl cmds */
19*53ee8cc1Swenshuai.xi #define SEM_STAT 18
20*53ee8cc1Swenshuai.xi #define SEM_INFO 19
21*53ee8cc1Swenshuai.xi 
22*53ee8cc1Swenshuai.xi /* Obsolete, used only for backwards compatibility and libc5 compiles */
23*53ee8cc1Swenshuai.xi struct semid_ds {
24*53ee8cc1Swenshuai.xi 	struct ipc_perm	sem_perm;		/* permissions .. see ipc.h */
25*53ee8cc1Swenshuai.xi 	__kernel_time_t	sem_otime;		/* last semop time */
26*53ee8cc1Swenshuai.xi 	__kernel_time_t	sem_ctime;		/* last change time */
27*53ee8cc1Swenshuai.xi 	struct sem	*sem_base;		/* ptr to first semaphore in array */
28*53ee8cc1Swenshuai.xi 	struct sem_queue *sem_pending;		/* pending operations to be processed */
29*53ee8cc1Swenshuai.xi 	struct sem_queue **sem_pending_last;	/* last pending operation */
30*53ee8cc1Swenshuai.xi 	struct sem_undo	*undo;			/* undo requests on this array */
31*53ee8cc1Swenshuai.xi 	unsigned short	sem_nsems;		/* no. of semaphores in array */
32*53ee8cc1Swenshuai.xi };
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi /* Include the definition of semid64_ds */
35*53ee8cc1Swenshuai.xi #include <asm/sembuf.h>
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi /* semop system calls takes an array of these. */
38*53ee8cc1Swenshuai.xi struct sembuf {
39*53ee8cc1Swenshuai.xi 	unsigned short  sem_num;	/* semaphore index in array */
40*53ee8cc1Swenshuai.xi 	short		sem_op;		/* semaphore operation */
41*53ee8cc1Swenshuai.xi 	short		sem_flg;	/* operation flags */
42*53ee8cc1Swenshuai.xi };
43*53ee8cc1Swenshuai.xi 
44*53ee8cc1Swenshuai.xi /* arg for semctl system calls. */
45*53ee8cc1Swenshuai.xi union semun {
46*53ee8cc1Swenshuai.xi 	int val;			/* value for SETVAL */
47*53ee8cc1Swenshuai.xi 	struct semid_ds *buf;	/* buffer for IPC_STAT & IPC_SET */
48*53ee8cc1Swenshuai.xi 	unsigned short *array;	/* array for GETALL & SETALL */
49*53ee8cc1Swenshuai.xi 	struct seminfo *__buf;	/* buffer for IPC_INFO */
50*53ee8cc1Swenshuai.xi 	void *__pad;
51*53ee8cc1Swenshuai.xi };
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi struct  seminfo {
54*53ee8cc1Swenshuai.xi 	int semmap;
55*53ee8cc1Swenshuai.xi 	int semmni;
56*53ee8cc1Swenshuai.xi 	int semmns;
57*53ee8cc1Swenshuai.xi 	int semmnu;
58*53ee8cc1Swenshuai.xi 	int semmsl;
59*53ee8cc1Swenshuai.xi 	int semopm;
60*53ee8cc1Swenshuai.xi 	int semume;
61*53ee8cc1Swenshuai.xi 	int semusz;
62*53ee8cc1Swenshuai.xi 	int semvmx;
63*53ee8cc1Swenshuai.xi 	int semaem;
64*53ee8cc1Swenshuai.xi };
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi #define SEMMNI  128             /* <= IPCMNI  max # of semaphore identifiers */
67*53ee8cc1Swenshuai.xi #define SEMMSL  250             /* <= 8 000 max num of semaphores per id */
68*53ee8cc1Swenshuai.xi #define SEMMNS  (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */
69*53ee8cc1Swenshuai.xi #define SEMOPM  32	        /* <= 1 000 max num of ops per semop call */
70*53ee8cc1Swenshuai.xi #define SEMVMX  32767           /* <= 32767 semaphore maximum value */
71*53ee8cc1Swenshuai.xi #define SEMAEM  SEMVMX          /* adjust on exit max value */
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi /* unused */
74*53ee8cc1Swenshuai.xi #define SEMUME  SEMOPM          /* max num of undo entries per process */
75*53ee8cc1Swenshuai.xi #define SEMMNU  SEMMNS          /* num of undo structures system wide */
76*53ee8cc1Swenshuai.xi #define SEMMAP  SEMMNS          /* # of entries in semaphore map */
77*53ee8cc1Swenshuai.xi #define SEMUSZ  20		/* sizeof struct sem_undo */
78*53ee8cc1Swenshuai.xi 
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi #endif /* _LINUX_SEM_H */
81