text: /****************************************************************************
   ****************************************************************************
   ***
   ***   This header was automatically generated from a Linux kernel header
   ***   of the same name, to make information necessary for userspace to
   ***   call into the kernel available to libc.  It contains only constants,
   ***   structures, and macros generated from the original header, and thus,
   ***   contains no copyrightable information.
   ***
   ****************************************************************************
   ****************************************************************************/
  #ifndef _LINUX_SEM_H
  #define _LINUX_SEM_H
  
  #include <linux/ipc.h>
  
  #define SEM_UNDO 0x1000  
  
  #define GETPID 11  
  #define GETVAL 12  
  #define GETALL 13  
  #define GETNCNT 14  
  #define GETZCNT 15  
  #define SETVAL 16  
  #define SETALL 17  
  
  #define SEM_STAT 18
  #define SEM_INFO 19
  
  struct semid_ds {
   struct ipc_perm sem_perm;
   __kernel_time_t sem_otime;
   __kernel_time_t sem_ctime;
   struct sem *sem_base;
   struct sem_queue *sem_pending;
   struct sem_queue **sem_pending_last;
   struct sem_undo *undo;
   unsigned short sem_nsems;
  };
  
  #include <asm/sembuf.h>
  
  struct sembuf {
   unsigned short sem_num;
   short sem_op;
   short sem_flg;
  };
  
  union semun {
   int val;
   struct semid_ds __user *buf;
   unsigned short __user *array;
   struct seminfo __user *__buf;
   void __user *__pad;
  };
  
  struct seminfo {
   int semmap;
   int semmni;
   int semmns;
   int semmnu;
   int semmsl;
   int semopm;
   int semume;
   int semusz;
   int semvmx;
   int semaem;
  };
  
  #define SEMMNI 128  
  #define SEMMSL 250  
  #define SEMMNS (SEMMNI*SEMMSL)  
  #define SEMOPM 32  
  #define SEMVMX 32767  
  #define SEMAEM SEMVMX  
  
  #define SEMUME SEMOPM  
  #define SEMMNU SEMMNS  
  #define SEMMAP SEMMNS  
  #define SEMUSZ 20  
  
  #endif
  