]>
Commit | Line | Data |
---|---|---|
fea681da MK |
1 | .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) |
2 | .\" | |
93015253 | 3 | .\" %%%LICENSE_START(VERBATIM) |
fea681da MK |
4 | .\" Permission is granted to make and distribute verbatim copies of this |
5 | .\" manual provided the copyright notice and this permission notice are | |
6 | .\" preserved on all copies. | |
7 | .\" | |
8 | .\" Permission is granted to copy and distribute modified versions of this | |
9 | .\" manual under the conditions for verbatim copying, provided that the | |
10 | .\" entire resulting derived work is distributed under the terms of a | |
11 | .\" permission notice identical to this one. | |
c13182ef | 12 | .\" |
fea681da MK |
13 | .\" Since the Linux kernel and libraries are constantly changing, this |
14 | .\" manual page may be incorrect or out-of-date. The author(s) assume no | |
15 | .\" responsibility for errors or omissions, or for damages resulting from | |
16 | .\" the use of the information contained herein. The author(s) may not | |
17 | .\" have taken the same level of care in the production of this manual, | |
18 | .\" which is licensed free of charge, as they might when working | |
19 | .\" professionally. | |
c13182ef | 20 | .\" |
fea681da MK |
21 | .\" Formatted or processed versions of this manual, if unaccompanied by |
22 | .\" the source, must acknowledge the copyright and authors of this work. | |
4b72fb64 | 23 | .\" %%%LICENSE_END |
fea681da MK |
24 | .\" |
25 | .\" Modified 1996-10-22, Eric S. Raymond <esr@thyrsus.com> | |
c11b1abf | 26 | .\" Modified 2002-01-08, Michael Kerrisk <mtk.manpages@gmail.com> |
fea681da | 27 | .\" Modified 2003-04-28, Ernie Petrides <petrides@redhat.com> |
c11b1abf MK |
28 | .\" Modified 2004-05-27, Michael Kerrisk <mtk.manpages@gmail.com> |
29 | .\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com> | |
fe1c5199 MK |
30 | .\" Language and formatting clean-ups |
31 | .\" Added notes on /proc files | |
055fd5fa | 32 | .\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop() |
dd9b25a6 | 33 | .\" 2007-07-09, mtk, Added an EXAMPLE code segment. |
fea681da | 34 | .\" |
4b8c67d9 | 35 | .TH SEMOP 2 2017-09-15 "Linux" "Linux Programmer's Manual" |
fea681da | 36 | .SH NAME |
47f065d6 | 37 | semop, semtimedop \- System V semaphore operations |
fea681da MK |
38 | .SH SYNOPSIS |
39 | .nf | |
2fadbfb5 MK |
40 | .B #include <sys/types.h> |
41 | .B #include <sys/ipc.h> | |
42 | .B #include <sys/sem.h> | |
68e4db0a | 43 | .PP |
4a60035c | 44 | .BI "int semop(int " semid ", struct sembuf *" sops ", size_t " nsops ); |
68e4db0a | 45 | .PP |
4a60035c RV |
46 | .BI "int semtimedop(int " semid ", struct sembuf *" sops ", size_t " nsops , |
47 | .BI " const struct timespec *" timeout ); | |
521bf584 | 48 | .fi |
68e4db0a | 49 | .PP |
cc4615cc MK |
50 | .in -4n |
51 | Feature Test Macro Requirements for glibc (see | |
52 | .BR feature_test_macros (7)): | |
53 | .in | |
68e4db0a | 54 | .PP |
cc4615cc MK |
55 | .BR semtimedop (): |
56 | _GNU_SOURCE | |
fea681da | 57 | .SH DESCRIPTION |
efbfd7ec | 58 | Each semaphore in a System\ V semaphore set |
47f065d6 | 59 | has the following associated values: |
bdd915e2 | 60 | .PP |
fea681da | 61 | .in +4n |
b8302363 | 62 | .EX |
fea681da MK |
63 | unsigned short semval; /* semaphore value */ |
64 | unsigned short semzcnt; /* # waiting for zero */ | |
65 | unsigned short semncnt; /* # waiting for increase */ | |
cd65c2b1 | 66 | pid_t sempid; /* PID of process that last |
b9c93deb MK |
67 | .in |
68 | .EE | |
bdd915e2 | 69 | .PP |
fe1c5199 MK |
70 | .BR semop () |
71 | performs operations on selected semaphores in the set indicated by | |
fea681da MK |
72 | .IR semid . |
73 | Each of the | |
74 | .I nsops | |
75 | elements in the array pointed to by | |
76 | .I sops | |
be031d85 | 77 | is a structure that |
fe1c5199 MK |
78 | specifies an operation to be performed on a single semaphore. |
79 | The elements of this structure are of type | |
8478ee02 | 80 | .IR "struct sembuf" , |
fe1c5199 | 81 | containing the following members: |
51f5698d | 82 | .PP |
fea681da | 83 | .in +4n |
b8302363 | 84 | .EX |
fe1c5199 MK |
85 | unsigned short sem_num; /* semaphore number */ |
86 | short sem_op; /* semaphore operation */ | |
87 | short sem_flg; /* operation flags */ | |
b8302363 | 88 | .EE |
e646a1ba | 89 | .in |
ba39b288 | 90 | .PP |
fea681da MK |
91 | Flags recognized in |
92 | .I sem_flg | |
93 | are | |
94 | .B IPC_NOWAIT | |
95 | and | |
96 | .BR SEM_UNDO . | |
fe1c5199 | 97 | If an operation specifies |
fea681da | 98 | .BR SEM_UNDO , |
fe1c5199 | 99 | it will be automatically undone when the process terminates. |
fea681da MK |
100 | .PP |
101 | The set of operations contained in | |
102 | .I sops | |
c13182ef MK |
103 | is performed in |
104 | .IR "array order" , | |
105 | and | |
fea681da | 106 | .IR atomically , |
87f434df MK |
107 | that is, the operations are performed either as a complete unit, |
108 | or not at all. | |
d9bfdb9c | 109 | The behavior of the system call if not all operations can be |
fea681da MK |
110 | performed immediately depends on the presence of the |
111 | .B IPC_NOWAIT | |
112 | flag in the individual | |
113 | .I sem_flg | |
114 | fields, as noted below. | |
efeece04 | 115 | .PP |
fea681da MK |
116 | Each operation is performed on the |
117 | .IR sem_num \-th | |
118 | semaphore of the semaphore set, where the first semaphore of the set | |
fe1c5199 | 119 | is numbered 0. |
fea681da MK |
120 | There are three types of operation, distinguished by the value of |
121 | .IR sem_op . | |
122 | .PP | |
123 | If | |
124 | .I sem_op | |
125 | is a positive integer, the operation adds this value to | |
126 | the semaphore value | |
127 | .RI ( semval ). | |
128 | Furthermore, if | |
129 | .B SEM_UNDO | |
b41a5d54 MK |
130 | is specified for this operation, the system subtracts the value |
131 | .I sem_op | |
132 | from the semaphore adjustment | |
fea681da | 133 | .RI ( semadj ) |
b41a5d54 | 134 | value for this semaphore. |
352c778d | 135 | This operation can always proceed\(emit never forces a thread to wait. |
fea681da MK |
136 | The calling process must have alter permission on the semaphore set. |
137 | .PP | |
138 | If | |
139 | .I sem_op | |
fe1c5199 | 140 | is zero, the process must have read permission on the semaphore |
fea681da MK |
141 | set. |
142 | This is a "wait-for-zero" operation: if | |
143 | .I semval | |
144 | is zero, the operation can immediately proceed. | |
145 | Otherwise, if | |
146 | .B IPC_NOWAIT | |
fe1c5199 | 147 | is specified in |
fea681da | 148 | .IR sem_flg , |
fe1c5199 MK |
149 | .BR semop () |
150 | fails with | |
fea681da MK |
151 | .I errno |
152 | set to | |
153 | .B EAGAIN | |
154 | (and none of the operations in | |
155 | .I sops | |
156 | is performed). | |
68bcc5ff | 157 | Otherwise, |
fea681da | 158 | .I semzcnt |
352c778d MK |
159 | (the count of threads waiting until this semaphore's value becomes zero) |
160 | is incremented by one and the thread sleeps until | |
fea681da | 161 | one of the following occurs: |
7670ac9d | 162 | .IP \(bu 3 |
fea681da MK |
163 | .I semval |
164 | becomes 0, at which time the value of | |
165 | .I semzcnt | |
166 | is decremented. | |
167 | .IP \(bu | |
168 | The semaphore set | |
fe1c5199 MK |
169 | is removed: |
170 | .BR semop () | |
171 | fails, with | |
fea681da MK |
172 | .I errno |
173 | set to | |
174 | .BR EIDRM . | |
175 | .IP \(bu | |
352c778d | 176 | The calling thread catches a signal: |
fea681da MK |
177 | the value of |
178 | .I semzcnt | |
fe1c5199 MK |
179 | is decremented and |
180 | .BR semop () | |
181 | fails, with | |
fea681da MK |
182 | .I errno |
183 | set to | |
184 | .BR EINTR . | |
fea681da MK |
185 | .PP |
186 | If | |
187 | .I sem_op | |
188 | is less than zero, the process must have alter permission on the | |
189 | semaphore set. | |
190 | If | |
191 | .I semval | |
192 | is greater than or equal to the absolute value of | |
193 | .IR sem_op , | |
194 | the operation can proceed immediately: | |
195 | the absolute value of | |
196 | .I sem_op | |
197 | is subtracted from | |
198 | .IR semval , | |
199 | and, if | |
200 | .B SEM_UNDO | |
b41a5d54 MK |
201 | is specified for this operation, the system adds the absolute value of |
202 | .I sem_op | |
203 | to the semaphore adjustment | |
fea681da | 204 | .RI ( semadj ) |
b41a5d54 | 205 | value for this semaphore. |
fea681da MK |
206 | If the absolute value of |
207 | .I sem_op | |
208 | is greater than | |
209 | .IR semval , | |
210 | and | |
211 | .B IPC_NOWAIT | |
fe1c5199 | 212 | is specified in |
fea681da | 213 | .IR sem_flg , |
fe1c5199 MK |
214 | .BR semop () |
215 | fails, with | |
fea681da MK |
216 | .I errno |
217 | set to | |
218 | .B EAGAIN | |
219 | (and none of the operations in | |
220 | .I sops | |
221 | is performed). | |
68bcc5ff | 222 | Otherwise, |
fea681da | 223 | .I semncnt |
352c778d MK |
224 | (the counter of threads waiting for this semaphore's value to increase) |
225 | is incremented by one and the thread sleeps until | |
fea681da | 226 | one of the following occurs: |
7670ac9d | 227 | .IP \(bu 3 |
fea681da MK |
228 | .I semval |
229 | becomes greater than or equal to the absolute value of | |
b41a5d54 MK |
230 | .IR sem_op : |
231 | the operation now proceeds, as described above. | |
fea681da | 232 | .IP \(bu |
fe1c5199 MK |
233 | The semaphore set is removed from the system: |
234 | .BR semop () | |
235 | fails, with | |
fea681da MK |
236 | .I errno |
237 | set to | |
238 | .BR EIDRM . | |
239 | .IP \(bu | |
352c778d | 240 | The calling thread catches a signal: |
fea681da MK |
241 | the value of |
242 | .I semncnt | |
c13182ef | 243 | is decremented and |
fe1c5199 MK |
244 | .BR semop () |
245 | fails, with | |
fea681da MK |
246 | .I errno |
247 | set to | |
248 | .BR EINTR . | |
fea681da MK |
249 | .PP |
250 | On successful completion, the | |
251 | .I sempid | |
252 | value for each semaphore specified in the array pointed to by | |
253 | .I sops | |
352c778d | 254 | is set to the caller's process ID. |
fea681da MK |
255 | In addition, the |
256 | .I sem_otime | |
257 | .\" and | |
258 | .\" .I sem_ctime | |
259 | is set to the current time. | |
d9817570 | 260 | .SS semtimedop() |
fe1c5199 | 261 | .BR semtimedop () |
c13182ef | 262 | behaves identically to |
fe1c5199 | 263 | .BR semop () |
0649de17 | 264 | except that in those cases where the calling thread would sleep, |
fea681da MK |
265 | the duration of that sleep is limited by the amount of elapsed |
266 | time specified by the | |
66ee0c7e | 267 | .I timespec |
fea681da MK |
268 | structure whose address is passed in the |
269 | .I timeout | |
c4bb193f | 270 | argument. |
73655200 MK |
271 | (This sleep interval will be rounded up to the system clock granularity, |
272 | and kernel scheduling delays mean that the interval | |
273 | may overrun by a small amount.) | |
c13182ef | 274 | If the specified time limit has been reached, |
fe1c5199 MK |
275 | .BR semtimedop () |
276 | fails with | |
fea681da MK |
277 | .I errno |
278 | set to | |
279 | .B EAGAIN | |
280 | (and none of the operations in | |
281 | .I sops | |
282 | is performed). | |
283 | If the | |
284 | .I timeout | |
c4bb193f | 285 | argument is NULL, |
fea681da | 286 | then |
fe1c5199 | 287 | .BR semtimedop () |
fea681da | 288 | behaves exactly like |
fe1c5199 | 289 | .BR semop (). |
efeece04 | 290 | .PP |
2013e2eb | 291 | Note that if |
92909040 | 292 | .BR semtimedop () |
2013e2eb MK |
293 | is interrupted by a signal, causing the call to fail with the error |
294 | .BR EINTR , | |
295 | the contents of | |
296 | .IR timeout | |
297 | are left unchanged. | |
47297adb | 298 | .SH RETURN VALUE |
41ce2381 | 299 | If successful, |
fe1c5199 | 300 | .BR semop () |
c13182ef | 301 | and |
fe1c5199 MK |
302 | .BR semtimedop () |
303 | return 0; | |
8729177b | 304 | otherwise they return \-1 |
fea681da MK |
305 | with |
306 | .I errno | |
307 | indicating the error. | |
308 | .SH ERRORS | |
309 | On failure, | |
310 | .I errno | |
311 | is set to one of the following: | |
312 | .TP | |
313 | .B E2BIG | |
314 | The argument | |
315 | .I nsops | |
316 | is greater than | |
317 | .BR SEMOPM , | |
318 | the maximum number of operations allowed per system | |
319 | call. | |
320 | .TP | |
321 | .B EACCES | |
322 | The calling process does not have the permissions required | |
323 | to perform the specified semaphore operations, | |
324 | and does not have the | |
325 | .B CAP_IPC_OWNER | |
3294109d | 326 | capability in the user namespace that governs its IPC namespace. |
fea681da MK |
327 | .TP |
328 | .B EAGAIN | |
329 | An operation could not proceed immediately and either | |
0daa9e92 | 330 | .B IPC_NOWAIT |
fe1c5199 | 331 | was specified in |
fea681da MK |
332 | .I sem_flg |
333 | or the time limit specified in | |
334 | .I timeout | |
335 | expired. | |
336 | .TP | |
337 | .B EFAULT | |
338 | An address specified in either the | |
339 | .I sops | |
c4bb193f | 340 | or the |
fea681da | 341 | .I timeout |
c4bb193f | 342 | argument isn't accessible. |
fea681da MK |
343 | .TP |
344 | .B EFBIG | |
345 | For some operation the value of | |
346 | .I sem_num | |
347 | is less than 0 or greater than or equal to the number | |
348 | of semaphores in the set. | |
349 | .TP | |
350 | .B EIDRM | |
351 | The semaphore set was removed. | |
352 | .TP | |
353 | .B EINTR | |
352c778d | 354 | While blocked in this system call, the thread caught a signal; see |
01538d0d | 355 | .BR signal (7). |
fea681da MK |
356 | .TP |
357 | .B EINVAL | |
358 | The semaphore set doesn't exist, or | |
359 | .I semid | |
360 | is less than zero, or | |
361 | .I nsops | |
657316c0 | 362 | has a nonpositive value. |
fea681da MK |
363 | .TP |
364 | .B ENOMEM | |
365 | The | |
366 | .I sem_flg | |
fe1c5199 | 367 | of some operation specified |
fea681da MK |
368 | .B SEM_UNDO |
369 | and the system does not have enough memory to allocate the undo | |
370 | structure. | |
371 | .TP | |
372 | .B ERANGE | |
373 | For some operation | |
374 | .I sem_op+semval | |
375 | is greater than | |
376 | .BR SEMVMX , | |
377 | the implementation dependent maximum value for | |
378 | .IR semval . | |
4f73a46c MK |
379 | .SH VERSIONS |
380 | .BR semtimedop () | |
381 | first appeared in Linux 2.5.52, | |
382 | and was subsequently backported into kernel 2.4.22. | |
988db661 | 383 | Glibc support for |
4f73a46c MK |
384 | .BR semtimedop () |
385 | first appeared in version 2.3.3. | |
47297adb | 386 | .SH CONFORMING TO |
ead51cab | 387 | POSIX.1-2001, POSIX.1-2008, SVr4. |
a1d5f77c | 388 | .\" SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC. |
fea681da | 389 | .SH NOTES |
f6652463 MK |
390 | The inclusion of |
391 | .I <sys/types.h> | |
392 | and | |
393 | .I <sys/ipc.h> | |
394 | isn't required on Linux or by any version of POSIX. | |
395 | However, | |
396 | some old implementations required the inclusion of these header files, | |
397 | and the SVID also documented their inclusion. | |
398 | Applications intended to be portable to such old systems may need | |
399 | to include these header files. | |
400 | .\" Like Linux, the FreeBSD man pages still document | |
401 | .\" the inclusion of these header files. | |
efeece04 | 402 | .PP |
fea681da MK |
403 | The |
404 | .I sem_undo | |
55aa2920 MK |
405 | structures of a process aren't inherited by the child produced by |
406 | .BR fork (2), | |
407 | but they are inherited across an | |
fea681da MK |
408 | .BR execve (2) |
409 | system call. | |
410 | .PP | |
fe1c5199 | 411 | .BR semop () |
fea681da MK |
412 | is never automatically restarted after being interrupted by a signal handler, |
413 | regardless of the setting of the | |
414 | .B SA_RESTART | |
fe1c5199 | 415 | flag when establishing a signal handler. |
efeece04 | 416 | .PP |
b41a5d54 MK |
417 | A semaphore adjustment |
418 | .RI ( semadj ) | |
419 | value is a per-process, per-semaphore integer that is the negated sum | |
420 | of all operations performed on a semaphore specifying the | |
fea681da MK |
421 | .B SEM_UNDO |
422 | flag. | |
b41a5d54 MK |
423 | Each process has a list of |
424 | .I semadj | |
425 | values\(emone value for each semaphore on which it has operated using | |
426 | .BR SEM_UNDO . | |
427 | When a process terminates, each of its per-semaphore | |
428 | .I semadj | |
429 | values is added to the corresponding semaphore, | |
430 | thus undoing the effect of that process's operations on the semaphore | |
431 | (but see BUGS below). | |
fea681da MK |
432 | When a semaphore's value is directly set using the |
433 | .B SETVAL | |
434 | or | |
435 | .B SETALL | |
436 | request to | |
437 | .BR semctl (2), | |
438 | the corresponding | |
439 | .I semadj | |
440 | values in all processes are cleared. | |
9d64e39e | 441 | The |
4f6396e2 | 442 | .BR clone (2) |
9d64e39e MK |
443 | .B CLONE_SYSVSEM |
444 | flag allows more than one process to share a | |
445 | .I semadj | |
446 | list; see | |
447 | .BR clone (2) | |
448 | for details. | |
efeece04 | 449 | .PP |
fea681da MK |
450 | The \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, and \fIsemnct\fP values |
451 | for a semaphore can all be retrieved using appropriate | |
452 | .BR semctl (2) | |
453 | calls. | |
0dc55d1b | 454 | .SS Semaphore limits |
540036b2 | 455 | The following limits on semaphore set resources affect the |
fe1c5199 | 456 | .BR semop () |
fea681da MK |
457 | call: |
458 | .TP | |
459 | .B SEMOPM | |
460 | Maximum number of operations allowed for one | |
fe1c5199 | 461 | .BR semop () |
98f792f7 MK |
462 | call. |
463 | Before Linux 3.19, | |
464 | .\" commit e843e7d2c88b7db107a86bd2c7145dc715c058f4 | |
465 | the default value for this limit was 32. | |
466 | Since Linux 3.19, the default value is 500. | |
467 | On Linux, this limit can be read and modified via the third field of | |
468 | .IR /proc/sys/kernel/sem . | |
fe1c5199 | 469 | .\" This /proc file is not available in Linux 2.2 and earlier -- MTK |
98f792f7 MK |
470 | .IR Note : |
471 | this limit should not be raised above 1000, | |
472 | .\" See comment in Linux 3.19 source file include/uapi/linux/sem.h | |
473 | because of the risk of that | |
bf7bc8b8 | 474 | .BR semop () |
98f792f7 MK |
475 | fails due to kernel memory fragmentation when allocating memory to copy the |
476 | .IR sops | |
477 | array. | |
fea681da MK |
478 | .TP |
479 | .B SEMVMX | |
480 | Maximum allowable value for | |
481 | .IR semval : | |
482 | implementation dependent (32767). | |
483 | .PP | |
484 | The implementation has no intrinsic limits for | |
485 | the adjust on exit maximum value | |
486 | .RB ( SEMAEM ), | |
487 | the system wide maximum number of undo structures | |
488 | .RB ( SEMMNU ) | |
2706f299 | 489 | and the per-process maximum number of undo entries system parameters. |
fea681da MK |
490 | .SH BUGS |
491 | When a process terminates, its set of associated | |
492 | .I semadj | |
493 | structures is used to undo the effect of all of the | |
494 | semaphore operations it performed with the | |
495 | .B SEM_UNDO | |
496 | flag. | |
497 | This raises a difficulty: if one (or more) of these semaphore adjustments | |
498 | would result in an attempt to decrease a semaphore's value below zero, | |
499 | what should an implementation do? | |
500 | One possible approach would be to block until all the semaphore | |
501 | adjustments could be performed. | |
502 | This is however undesirable since it could force process termination to | |
503 | block for arbitrarily long periods. | |
504 | Another possibility is that such semaphore adjustments could be ignored | |
505 | altogether (somewhat analogously to failing when | |
506 | .B IPC_NOWAIT | |
507 | is specified for a semaphore operation). | |
508 | Linux adopts a third approach: decreasing the semaphore value | |
509 | as far as possible (i.e., to zero) and allowing process | |
510 | termination to proceed immediately. | |
efeece04 | 511 | .PP |
c13182ef | 512 | In kernels 2.6.x, x <= 10, there is a bug that in some circumstances |
352c778d | 513 | prevents a thread that is waiting for a semaphore value to become |
3e4d52e1 MK |
514 | zero from being woken up when the value does actually become zero. |
515 | This bug is fixed in kernel 2.6.11. | |
516 | .\" The bug report: | |
517 | .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2 | |
518 | .\" the fix: | |
519 | .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2 | |
dd9b25a6 MK |
520 | .SH EXAMPLE |
521 | The following code segment uses | |
522 | .BR semop () | |
523 | to atomically wait for the value of semaphore 0 to become zero, | |
524 | and then increment the semaphore value by one. | |
408731d4 MK |
525 | .PP |
526 | .in +4n | |
527 | .EX | |
528 | struct sembuf sops[2]; | |
529 | int semid; | |
dd9b25a6 | 530 | |
408731d4 | 531 | /* Code to set \fIsemid\fP omitted */ |
dd9b25a6 | 532 | |
408731d4 MK |
533 | sops[0].sem_num = 0; /* Operate on semaphore 0 */ |
534 | sops[0].sem_op = 0; /* Wait for value to equal 0 */ | |
535 | sops[0].sem_flg = 0; | |
dd9b25a6 | 536 | |
408731d4 MK |
537 | sops[1].sem_num = 0; /* Operate on semaphore 0 */ |
538 | sops[1].sem_op = 1; /* Increment value by one */ | |
539 | sops[1].sem_flg = 0; | |
dd9b25a6 | 540 | |
408731d4 MK |
541 | if (semop(semid, sops, 2) == \-1) { |
542 | perror("semop"); | |
543 | exit(EXIT_FAILURE); | |
544 | } | |
545 | .EE | |
546 | .in | |
47297adb | 547 | .SH SEE ALSO |
f81b78a4 | 548 | .BR clone (2), |
fea681da MK |
549 | .BR semctl (2), |
550 | .BR semget (2), | |
551 | .BR sigaction (2), | |
f675ea37 | 552 | .BR capabilities (7), |
2c5e151c | 553 | .BR sem_overview (7), |
1d7c4d16 MK |
554 | .BR svipc (7), |
555 | .BR time (7) |