1*53ee8cc1Swenshuai.xi #ifndef _LINUX_IPC_H 2*53ee8cc1Swenshuai.xi #define _LINUX_IPC_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <linux/types.h> 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi #define IPC_PRIVATE ((__kernel_key_t) 0) 7*53ee8cc1Swenshuai.xi 8*53ee8cc1Swenshuai.xi /* Obsolete, used only for backwards compatibility and libc5 compiles */ 9*53ee8cc1Swenshuai.xi struct ipc_perm 10*53ee8cc1Swenshuai.xi { 11*53ee8cc1Swenshuai.xi __kernel_key_t key; 12*53ee8cc1Swenshuai.xi __kernel_uid_t uid; 13*53ee8cc1Swenshuai.xi __kernel_gid_t gid; 14*53ee8cc1Swenshuai.xi __kernel_uid_t cuid; 15*53ee8cc1Swenshuai.xi __kernel_gid_t cgid; 16*53ee8cc1Swenshuai.xi __kernel_mode_t mode; 17*53ee8cc1Swenshuai.xi unsigned short seq; 18*53ee8cc1Swenshuai.xi }; 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi /* Include the definition of ipc64_perm */ 21*53ee8cc1Swenshuai.xi #include <asm/ipcbuf.h> 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi /* resource get request flags */ 24*53ee8cc1Swenshuai.xi #define IPC_CREAT 00001000 /* create if key is nonexistent */ 25*53ee8cc1Swenshuai.xi #define IPC_EXCL 00002000 /* fail if key exists */ 26*53ee8cc1Swenshuai.xi #define IPC_NOWAIT 00004000 /* return error on wait */ 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi /* these fields are used by the DIPC package so the kernel as standard 29*53ee8cc1Swenshuai.xi should avoid using them if possible */ 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi #define IPC_DIPC 00010000 /* make it distributed */ 32*53ee8cc1Swenshuai.xi #define IPC_OWN 00020000 /* this machine is the DIPC owner */ 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi /* 35*53ee8cc1Swenshuai.xi * Control commands used with semctl, msgctl and shmctl 36*53ee8cc1Swenshuai.xi * see also specific commands in sem.h, msg.h and shm.h 37*53ee8cc1Swenshuai.xi */ 38*53ee8cc1Swenshuai.xi #define IPC_RMID 0 /* remove resource */ 39*53ee8cc1Swenshuai.xi #define IPC_SET 1 /* set ipc_perm options */ 40*53ee8cc1Swenshuai.xi #define IPC_STAT 2 /* get ipc_perm options */ 41*53ee8cc1Swenshuai.xi #define IPC_INFO 3 /* see ipcs */ 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi /* 44*53ee8cc1Swenshuai.xi * Version flags for semctl, msgctl, and shmctl commands 45*53ee8cc1Swenshuai.xi * These are passed as bitflags or-ed with the actual command 46*53ee8cc1Swenshuai.xi */ 47*53ee8cc1Swenshuai.xi #define IPC_OLD 0 /* Old version (no 32-bit UID support on many 48*53ee8cc1Swenshuai.xi architectures) */ 49*53ee8cc1Swenshuai.xi #define IPC_64 0x0100 /* New version (support 32-bit UIDs, bigger 50*53ee8cc1Swenshuai.xi message sizes, etc. */ 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi /* 53*53ee8cc1Swenshuai.xi * These are used to wrap system calls. 54*53ee8cc1Swenshuai.xi * 55*53ee8cc1Swenshuai.xi * See architecture code for ugly details.. 56*53ee8cc1Swenshuai.xi */ 57*53ee8cc1Swenshuai.xi struct ipc_kludge { 58*53ee8cc1Swenshuai.xi struct msgbuf *msgp; 59*53ee8cc1Swenshuai.xi long msgtyp; 60*53ee8cc1Swenshuai.xi }; 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi #define SEMOP 1 63*53ee8cc1Swenshuai.xi #define SEMGET 2 64*53ee8cc1Swenshuai.xi #define SEMCTL 3 65*53ee8cc1Swenshuai.xi #define SEMTIMEDOP 4 66*53ee8cc1Swenshuai.xi #define MSGSND 11 67*53ee8cc1Swenshuai.xi #define MSGRCV 12 68*53ee8cc1Swenshuai.xi #define MSGGET 13 69*53ee8cc1Swenshuai.xi #define MSGCTL 14 70*53ee8cc1Swenshuai.xi #define SHMAT 21 71*53ee8cc1Swenshuai.xi #define SHMDT 22 72*53ee8cc1Swenshuai.xi #define SHMGET 23 73*53ee8cc1Swenshuai.xi #define SHMCTL 24 74*53ee8cc1Swenshuai.xi 75*53ee8cc1Swenshuai.xi /* Used by the DIPC package, try and avoid reusing it */ 76*53ee8cc1Swenshuai.xi #define DIPC 25 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi #define IPCCALL(version,op) ((version)<<16 | (op)) 79*53ee8cc1Swenshuai.xi 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi #endif /* _LINUX_IPC_H */ 82