(root)/
glibc-2.38/
bits/
sem.h
       1  /* Copyright (C) 1995-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _SYS_SEM_H
      19  # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
      20  #endif
      21  
      22  #include <sys/types.h>
      23  
      24  /* Flags for `semop'.  */
      25  #define SEM_UNDO	0x1000		/* undo the operation on exit */
      26  
      27  /* Commands for `semctl'.  */
      28  #define GETPID		11		/* get sempid */
      29  #define GETVAL		12		/* get semval */
      30  #define GETALL		13		/* get all semval's */
      31  #define GETNCNT		14		/* get semncnt */
      32  #define GETZCNT		15		/* get semzcnt */
      33  #define SETVAL		16		/* set semval */
      34  #define SETALL		17		/* set all semval's */
      35  
      36  
      37  /* Data structure describing a set of semaphores.  */
      38  struct semid_ds
      39  {
      40    struct ipc_perm sem_perm;		/* operation permission struct */
      41    __time_t sem_otime;			/* last semop() time */
      42    __time_t sem_ctime;			/* last time changed by semctl() */
      43    unsigned short int sem_nsems;		/* number of semaphores in set */
      44  };
      45  
      46  /* The user should define a union like the following to use it for arguments
      47     for `semctl'.
      48  
      49     union semun
      50     {
      51       int val;				<= value for SETVAL
      52       struct semid_ds *buf;		<= buffer for IPC_STAT & IPC_SET
      53       unsigned short int *array;		<= array for GETALL & SETALL
      54       struct seminfo *__buf;		<= buffer for IPC_INFO
      55     };
      56  
      57     Previous versions of this file used to define this union but this is
      58     incorrect.  One can test the macro _SEM_SEMUN_UNDEFINED to see whether
      59     one must define the union or not.  */
      60  #define _SEM_SEMUN_UNDEFINED	1