| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | /* Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  */#ifndef _SYS_SEM_H# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."#endif#include <sys/types.h>/* Flags for `semop'.  */#define SEM_UNDO	0x1000		/* undo the operation on exit *//* Commands for `semctl'.  */#define GETPID		11		/* get sempid */#define GETVAL		12		/* get semval */#define GETALL		13		/* get all semval's */#define GETNCNT		14		/* get semncnt */#define GETZCNT		15		/* get semzcnt */#define SETVAL		16		/* set semval */#define SETALL		17		/* set all semval's *//* Data structure describing a set of semaphores.  */struct semid_ds {    struct ipc_perm	sem_perm;		/* permissions .. see ipc.h */    time_t		sem_otime;		/* last semop time */    time_t		sem_ctime;		/* last change time */    struct sem		*sem_base;		/* ptr to first semaphore in array */    struct sem_queue	*sem_pending;		/* pending operations to be processed */    struct sem_queue	**sem_pending_last;	/* last pending operation */    struct sem_undo	*undo;			/* undo requests on this array */    unsigned short	sem_nsems;		/* no. of semaphores in array */};/* The user should define a union like the following to use it for arguments   for `semctl'.   union semun   {     int val;				<= value for SETVAL     struct semid_ds *buf;		<= buffer for IPC_STAT & IPC_SET     unsigned short int *array;		<= array for GETALL & SETALL     struct seminfo *__buf;		<= buffer for IPC_INFO   };   Previous versions of this file used to define this union but this is   incorrect.  One can test the macro _SEM_SEMUN_UNDEFINED to see whether   one must define the union or not.  */#define _SEM_SEMUN_UNDEFINED	1#ifdef __USE_MISC/* ipcs ctl cmds */# define SEM_STAT 18# define SEM_INFO 19struct  seminfo{  int semmap;  int semmni;  int semmns;  int semmnu;  int semmsl;  int semopm;  int semume;  int semusz;  int semvmx;  int semaem;};#endif /* __USE_MISC */
 |