]>
Commit | Line | Data |
---|---|---|
1c001dd2 CS |
1 | /* sys/sem.h |
2 | ||
3 | Copyright 2002 Red Hat Inc. | |
4 | Written by Conrad Scott <conrad.scott@dsl.pipex.com> | |
5 | ||
6 | This file is part of Cygwin. | |
7 | ||
8 | This software is a copyrighted work licensed under the terms of the | |
9 | Cygwin license. Please consult the file "CYGWIN_LICENSE" for | |
10 | details. */ | |
11 | ||
12 | #ifndef _SYS_SEM_H | |
13 | #define _SYS_SEM_H | |
14 | ||
15 | #include <cygwin/ipc.h> | |
16 | ||
17 | #ifdef __cplusplus | |
18 | extern "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 | ||
39 | struct 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 | ||
51 | struct 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 | */ | |
60 | struct 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 | */ | |
81 | struct sem_info | |
82 | { | |
83 | unsigned long sem_ids; /* Number of allocated semaphore sets. */ | |
84 | unsigned long sem_num; /* Number of allocated semaphores. */ | |
85 | }; | |
86 | ||
87 | int semctl (int semid, int semnum, int cmd, ...); | |
88 | int semget (key_t key, int nsems, int semflg); | |
89 | int semop (int semid, struct sembuf *sops, size_t nsops); | |
90 | ||
91 | #ifdef __cplusplus | |
92 | } | |
93 | #endif | |
94 | ||
95 | #endif /* _SYS_SEM_H */ |