linux/include/linux/ipc.h
<<
>>
Prefs
   1#ifndef _LINUX_IPC_H
   2#define _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 */
   9struct 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 */
  57struct 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#ifdef __KERNEL__
  81#include <linux/spinlock.h>
  82
  83#define IPCMNI 32768  /* <= MAX_INT limit for ipc arrays (including sysctl changes) */
  84
  85/* used by in-kernel data structures */
  86struct kern_ipc_perm
  87{
  88        spinlock_t      lock;
  89        int             deleted;
  90        int             id;
  91        key_t           key;
  92        uid_t           uid;
  93        gid_t           gid;
  94        uid_t           cuid;
  95        gid_t           cgid;
  96        umode_t         mode; 
  97        unsigned long   seq;
  98        void            *security;
  99};
 100
 101#endif /* __KERNEL__ */
 102
 103#endif /* _LINUX_IPC_H */
 104