glibc (2.38)

(root)/
include/
sys/
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  #define _SYS_SEM_H	1
      20  
      21  #include <features.h>
      22  
      23  #define __need_size_t
      24  #include <stddef.h>
      25  
      26  /* Get common definition of System V style IPC.  */
      27  #include <sys/ipc.h>
      28  
      29  /* Get system dependent definition of `struct semid_ds' and more.  */
      30  #include <bits/sem.h>
      31  
      32  #ifdef __USE_GNU
      33  # include <bits/types/struct_timespec.h>
      34  #endif
      35  
      36  /* The following System V style IPC functions implement a semaphore
      37     handling.  The definition is found in XPG2.  */
      38  
      39  /* Structure used for argument to `semop' to describe operations.  */
      40  struct sembuf
      41  {
      42    unsigned short int sem_num;	/* semaphore number */
      43    short int sem_op;		/* semaphore operation */
      44    short int sem_flg;		/* operation flag */
      45  };
      46  
      47  
      48  __BEGIN_DECLS
      49  
      50  /* Semaphore control operation.  */
      51  #ifndef __USE_TIME_BITS64
      52  extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
      53  #else
      54  # ifdef __REDIRECT_NTH
      55  extern int __REDIRECT_NTH (semctl,
      56                             (int __semid, int __semnum, int __cmd, ...),
      57                             __semctl64);
      58  # else
      59  #  define semctl __semctl64
      60  # endif
      61  #endif
      62  
      63  /* Get semaphore.  */
      64  extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
      65  
      66  /* Operate on semaphore.  */
      67  extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
      68  
      69  #ifdef __USE_GNU
      70  /* Operate on semaphore with timeout.  */
      71  # ifndef __USE_TIME_BITS64
      72  extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
      73  		       const struct timespec *__timeout) __THROW;
      74  # else
      75  #  ifdef __REDIRECT_NTH
      76  extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
      77                                          size_t __nsops,
      78                                          const struct timespec *__timeout),
      79                             __semtimedop64);
      80  #  else
      81  #   define semtimedop __semtimedop64
      82  #  endif
      83  # endif
      84  #endif
      85  
      86  __END_DECLS
      87  
      88  #endif /* sys/sem.h */