]> sourceware.org Git - newlib-cygwin.git/blame - winsup/cygwin/include/cygwin/sem.h
* include/cygwin/version.h: Reorganize last two api versions so that btowc and
[newlib-cygwin.git] / winsup / cygwin / include / cygwin / sem.h
CommitLineData
1c001dd2
CS
1/* sys/sem.h
2
3 Copyright 2002 Red Hat Inc.
4 Written by Conrad Scott <conrad.scott@dsl.pipex.com>
5
6This file is part of Cygwin.
7
8This software is a copyrighted work licensed under the terms of the
9Cygwin license. Please consult the file "CYGWIN_LICENSE" for
10details. */
11
12#ifndef _SYS_SEM_H
13#define _SYS_SEM_H
14
15#include <cygwin/ipc.h>
16
17#ifdef __cplusplus
18extern "C"
19{
20#endif
21
22/* Semaphore operation flags:
23 */
24#define SEM_UNDO /* Set up adjust on exit entry. */
25
26/* Command definitions for the semctl () function:
27 */
28#define GETNCNT 0x3000 /* Get semncnt. */
29#define GETPID 0x3001 /* Get sempid. */
30#define GETVAL 0x3002 /* Get semval. */
31#define GETALL 0x3003 /* Get all cases of semval. */
32#define GETZCNT 0x3004 /* Get semzcnt. */
33#define SETVAL 0x3005 /* Set semval. */
34#define SETALL 0x3006 /* Set all cases of semval. */
35
36#define SEM_STAT 0x3010 /* For ipcs(8). */
37#define SEM_INFO 0x3011 /* For ipcs(8). */
38
39struct semid_ds
40{
41 struct ipc_perm sem_perm; /* Operation permission structure. */
42 unsigned short sem_nsems; /* Number of semaphores in set. */
43 timestruc_t sem_otim; /* Last semop () time. */
44 timestruc_t sem_ctim; /* Last time changed by semctl (). */
45 long sem_spare4[2];
46};
47
48#define sem_otime sem_otim.tv_sec
49#define sem_ctime sem_ctim.tv_sec
50
51struct sembuf
52{
53 unsigned short sem_num; /* Semaphore number. */
54 short sem_op; /* Semaphore operation. */
55 short sem_flg; /* Operation flags. */
56};
57
58/* Buffer type for semctl (IPC_INFO, ...) as used by ipcs(8).
59 */
60struct seminfo
61{
62 unsigned long semmni; /* Maximum number of unique semaphore
63 sets, system wide. */
64 unsigned long semmns; /* Maximum number of semaphores,
65 system wide. */
66 unsigned long semmsl; /* Maximum number of semaphores per
67 semaphore set. */
68 unsigned long semopm; /* Maximum number of operations per
69 semop call. */
70 unsigned long semmnu; /* Maximum number of undo structures,
71 system wide. */
72 unsigned long semume; /* Maximum number of undo entries per
73 undo structure. */
74 unsigned long semvmx; /* Maximum semaphore value. */
75 unsigned long semaem; /* Maximum adjust-on-exit value. */
76 unsigned long sem_spare[4];
77};
78
79/* Buffer type for semctl (SEM_INFO, ...) as used by ipcs(8).
80 */
81struct sem_info
82{
83 unsigned long sem_ids; /* Number of allocated semaphore sets. */
84 unsigned long sem_num; /* Number of allocated semaphores. */
85};
86
87int semctl (int semid, int semnum, int cmd, ...);
88int semget (key_t key, int nsems, int semflg);
89int semop (int semid, struct sembuf *sops, size_t nsops);
90
91#ifdef __cplusplus
92}
93#endif
94
95#endif /* _SYS_SEM_H */
This page took 0.051508 seconds and 5 git commands to generate.