File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/sem.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_SEM_H
       2: #define _UAPI_LINUX_SEM_H
       3: 
       4: #include <linux/ipc.h>
       5: 
       6: /* semop flags */
       7: #define SEM_UNDO        0x1000  /* undo the operation on exit */
       8: 
       9: /* 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 __user *buf;    /* buffer for IPC_STAT & IPC_SET */
      48:     unsigned short __user *array;    /* array for GETALL & SETALL */
      49:     struct seminfo __user *__buf;    /* buffer for IPC_INFO */
      50:     void __user *__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 /* _UAPI_LINUX_SEM_H */
      81: