summaryrefslogtreecommitdiffstats
path: root/man3/sem_wait.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/sem_wait.3')
-rw-r--r--man3/sem_wait.346
1 files changed, 23 insertions, 23 deletions
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3
index e08e53f0d..b1302ca32 100644
--- a/man3/sem_wait.3
+++ b/man3/sem_wait.3
@@ -3,7 +3,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH sem_wait 3 2022-12-15 "Linux man-pages 6.03"
+.TH sem_wait 3 2023-07-20 "Linux man-pages 6.05.01"
.SH NAME
sem_wait, sem_timedwait, sem_trywait \- lock a semaphore
.SH LIBRARY
@@ -114,24 +114,24 @@ The call timed out before the semaphore could be locked.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
-.ad l
-.nh
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
+.na
+.nh
.BR sem_wait (),
.BR sem_trywait (),
.BR sem_timedwait ()
T} Thread safety MT-Safe
.TE
-.hy
-.ad
.sp 1
.SH STANDARDS
-POSIX.1-2001, POSIX.1-2008.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
.SH EXAMPLES
The (somewhat trivial) program shown below operates on an
unnamed semaphore.
@@ -173,14 +173,14 @@ sem_timedwait() timed out
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
-
+\&
#include <assert.h>
-
+\&
sem_t sem;
-
+\&
#define handle_error(msg) \e
do { perror(msg); exit(EXIT_FAILURE); } while (0)
-
+\&
static void
handler(int sig)
{
@@ -190,47 +190,47 @@ handler(int sig)
_exit(EXIT_FAILURE);
}
}
-
+\&
int
main(int argc, char *argv[])
{
struct sigaction sa;
struct timespec ts;
int s;
-
+\&
if (argc != 3) {
fprintf(stderr, "Usage: %s <alarm\-secs> <wait\-secs>\en",
argv[0]);
exit(EXIT_FAILURE);
}
-
+\&
if (sem_init(&sem, 0, 0) == \-1)
handle_error("sem_init");
-
+\&
/* Establish SIGALRM handler; set alarm timer using argv[1]. */
-
+\&
sa.sa_handler = handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGALRM, &sa, NULL) == \-1)
handle_error("sigaction");
-
+\&
alarm(atoi(argv[1]));
-
+\&
/* Calculate relative interval as current time plus
number of seconds given argv[2]. */
-
+\&
if (clock_gettime(CLOCK_REALTIME, &ts) == \-1)
handle_error("clock_gettime");
-
+\&
ts.tv_sec += atoi(argv[2]);
-
+\&
printf("%s() about to call sem_timedwait()\en", __func__);
while ((s = sem_timedwait(&sem, &ts)) == \-1 && errno == EINTR)
continue; /* Restart if interrupted by handler. */
-
+\&
/* Check what happened. */
-
+\&
if (s == \-1) {
if (errno == ETIMEDOUT)
printf("sem_timedwait() timed out\en");
@@ -238,7 +238,7 @@ main(int argc, char *argv[])
perror("sem_timedwait");
} else
printf("sem_timedwait() succeeded\en");
-
+\&
exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);
}
.EE