• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2017 The Android Open Source Project
2 // SPDX-License-Identifier: BSD-2-Clause
3 
4 #if defined(__BIONIC__)
5 
6 #include <sys/sem.h>
7 
8 #include "header_checks.h"
9 
sys_sem_h()10 static void sys_sem_h() {
11   MACRO(SEM_UNDO);
12 
13   MACRO(GETNCNT);
14   MACRO(GETPID);
15   MACRO(GETVAL);
16   MACRO(GETALL);
17   MACRO(GETZCNT);
18   MACRO(SETVAL);
19   MACRO(SETALL);
20 
21   TYPE(struct semid_ds);
22   STRUCT_MEMBER(struct semid_ds, struct ipc_perm, sem_perm);
23 #if defined(__linux__) // POSIX says short, Linux says long.
24   STRUCT_MEMBER(struct semid_ds, unsigned long, sem_nsems);
25 #else
26   STRUCT_MEMBER(struct semid_ds, unsigned short, sem_nsems);
27 #endif
28 #if defined(__LP64__)
29   STRUCT_MEMBER(struct semid_ds, time_t, sem_otime);
30   STRUCT_MEMBER(struct semid_ds, time_t, sem_ctime);
31 #else
32   // Starting at kernel v4.19, 32 bit changed these to unsigned values.
33   STRUCT_MEMBER(struct semid_ds, unsigned long, sem_otime);
34   STRUCT_MEMBER(struct semid_ds, unsigned long, sem_ctime);
35 #endif
36 
37   TYPE(pid_t);
38   TYPE(size_t);
39   TYPE(time_t);
40 
41   TYPE(struct sembuf);
42   STRUCT_MEMBER(struct sembuf, unsigned short, sem_num);
43   STRUCT_MEMBER(struct sembuf, short, sem_op);
44   STRUCT_MEMBER(struct sembuf, short, sem_flg);
45 
46   FUNCTION(semctl, int (*f)(int, int, int, ...));
47   FUNCTION(semget, int (*f)(key_t, int, int));
48   FUNCTION(semop, int (*f)(int, struct sembuf*, size_t));
49 }
50 
51 #endif
52