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_SEM_H 7 #define _UAPI_LINUX_SEM_H 8 #include <linux/ipc.h> 9 #define SEM_UNDO 0x1000 10 #define GETPID 11 11 #define GETVAL 12 12 #define GETALL 13 13 #define GETNCNT 14 14 #define GETZCNT 15 15 #define SETVAL 16 16 #define SETALL 17 17 #define SEM_STAT 18 18 #define SEM_INFO 19 19 #define SEM_STAT_ANY 20 20 struct __kernel_legacy_semid_ds { 21 struct __kernel_legacy_ipc_perm sem_perm; 22 __kernel_time_t sem_otime; 23 __kernel_time_t sem_ctime; 24 struct sem *sem_base; 25 struct sem_queue *sem_pending; 26 struct sem_queue **sem_pending_last; 27 struct sem_undo *undo; 28 unsigned short sem_nsems; 29 }; 30 #include <asm/sembuf.h> 31 struct sembuf { 32 unsigned short sem_num; 33 short sem_op; 34 short sem_flg; 35 }; 36 union __kernel_legacy_semun { 37 int val; 38 struct __kernel_legacy_semid_ds __user *buf; 39 unsigned short __user *array; 40 struct seminfo __user *__buf; 41 void __user *__pad; 42 }; 43 struct seminfo { 44 int semmap; 45 int semmni; 46 int semmns; 47 int semmnu; 48 int semmsl; 49 int semopm; 50 int semume; 51 int semusz; 52 int semvmx; 53 int semaem; 54 }; 55 #define SEMMNI 32000 56 #define SEMMSL 32000 57 #define SEMMNS (SEMMNI*SEMMSL) 58 #define SEMOPM 500 59 #define SEMVMX 32767 60 #define SEMAEM SEMVMX 61 #define SEMUME SEMOPM 62 #define SEMMNU SEMMNS 63 #define SEMMAP SEMMNS 64 #define SEMUSZ 20 65 #endif 66