glibc (2.38)

(root)/
include/
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  #include <bits/timesize.h>
      24  #include <bits/types/struct_semid_ds.h>
      25  #include <bits/types/struct_semid64_ds.h>
      26  
      27  /* Flags for `semop'.  */
      28  #define SEM_UNDO	0x1000		/* undo the operation on exit */
      29  
      30  /* Commands for `semctl'.  */
      31  #define GETPID		11		/* get sempid */
      32  #define GETVAL		12		/* get semval */
      33  #define GETALL		13		/* get all semval's */
      34  #define GETNCNT		14		/* get semncnt */
      35  #define GETZCNT		15		/* get semzcnt */
      36  #define SETVAL		16		/* set semval */
      37  #define SETALL		17		/* set all semval's */
      38  
      39  /* The user should define a union like the following to use it for arguments
      40     for `semctl'.
      41  
      42     union semun
      43     {
      44       int val;				<= value for SETVAL
      45       struct semid_ds *buf;		<= buffer for IPC_STAT & IPC_SET
      46       unsigned short int *array;		<= array for GETALL & SETALL
      47       struct seminfo *__buf;		<= buffer for IPC_INFO
      48     };
      49  
      50     Previous versions of this file used to define this union but this is
      51     incorrect.  One can test the macro _SEM_SEMUN_UNDEFINED to see whether
      52     one must define the union or not.  */
      53  #define _SEM_SEMUN_UNDEFINED	1
      54  
      55  #ifdef __USE_MISC
      56  
      57  /* ipcs ctl cmds */
      58  # define SEM_STAT 18
      59  # define SEM_INFO 19
      60  # define SEM_STAT_ANY 20
      61  
      62  struct  seminfo
      63  {
      64    int semmap;
      65    int semmni;
      66    int semmns;
      67    int semmnu;
      68    int semmsl;
      69    int semopm;
      70    int semume;
      71    int semusz;
      72    int semvmx;
      73    int semaem;
      74  };
      75  
      76  #endif /* __USE_MISC */