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