File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/ipc.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

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