aboutsummaryrefslogtreecommitdiffstats
path: root/man/man3/pthread_create.3
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2025-08-19 17:48:50 +0200
committerAlejandro Colomar <alx@kernel.org>2025-08-20 18:14:03 +0200
commit0e7a39804a3c017a209117fc2243c6cbb543dede (patch)
tree91e0b287d8b826d668c3d8118347f07cc8b8964a /man/man3/pthread_create.3
parente2d3f14fe40ad90a1fedf0fcd27e6cc896c49a7a (diff)
downloadman-pages-0e7a39804a3c.tar.gz
man/: EXAMPLES: Use err(3) and errc(3bsd) instead of similar macros
These functions are quite portable. And if one doesn't have them for some reason (but libbsd has been ported to many systems), one can write them easily as macros, anyway. Signed-off-by: Alejandro Colomar <alx@kernel.org>
Diffstat (limited to 'man/man3/pthread_create.3')
-rw-r--r--man/man3/pthread_create.321
1 files changed, 8 insertions, 13 deletions
diff --git a/man/man3/pthread_create.3 b/man/man3/pthread_create.3
index 1aee9c06fa..8c9f58edd1 100644
--- a/man/man3/pthread_create.3
+++ b/man/man3/pthread_create.3
@@ -251,6 +251,7 @@ Joined with thread 3; returned value was SERVUS
.\" SRC BEGIN (pthread_create.c)
.EX
#include <ctype.h>
+#include <err.h>
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
@@ -259,12 +260,6 @@ Joined with thread 3; returned value was SERVUS
#include <sys/types.h>
#include <unistd.h>
\&
-#define handle_error_en(en, msg) \[rs]
- do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
-\&
-#define handle_error(msg) \[rs]
- do { perror(msg); exit(EXIT_FAILURE); } while (0)
-\&
struct thread_info { /* Used as argument to thread_start() */
pthread_t thread_id; /* ID returned by pthread_create() */
int thread_num; /* Application\-defined thread # */
@@ -285,7 +280,7 @@ thread_start(void *arg)
\&
uargv = strdup(tinfo\->argv_string);
if (uargv == NULL)
- handle_error("strdup");
+ err(EXIT_FAILURE, "strdup");
\&
for (char *p = uargv; *p != \[aq]\[rs]0\[aq]; p++)
*p = toupper(*p);
@@ -325,19 +320,19 @@ main(int argc, char *argv[])
\&
s = pthread_attr_init(&attr);
if (s != 0)
- handle_error_en(s, "pthread_attr_init");
+ errc(EXIT_FAILURE, s, "pthread_attr_init");
\&
if (stack_size > 0) {
s = pthread_attr_setstacksize(&attr, stack_size);
if (s != 0)
- handle_error_en(s, "pthread_attr_setstacksize");
+ errc(EXIT_FAILURE, s, "pthread_attr_setstacksize");
}
\&
/* Allocate memory for pthread_create() arguments. */
\&
tinfo = calloc(num_threads, sizeof(*tinfo));
if (tinfo == NULL)
- handle_error("calloc");
+ err(EXIT_FAILURE, "calloc");
\&
/* Create one thread for each command\-line argument. */
\&
@@ -351,7 +346,7 @@ main(int argc, char *argv[])
s = pthread_create(&tinfo[tnum].thread_id, &attr,
&thread_start, &tinfo[tnum]);
if (s != 0)
- handle_error_en(s, "pthread_create");
+ errc(EXIT_FAILURE, s, "pthread_create");
}
\&
/* Destroy the thread attributes object, since it is no
@@ -359,14 +354,14 @@ main(int argc, char *argv[])
\&
s = pthread_attr_destroy(&attr);
if (s != 0)
- handle_error_en(s, "pthread_attr_destroy");
+ errc(EXIT_FAILURE, s, "pthread_attr_destroy");
\&
/* Now join with each thread, and display its returned value. */
\&
for (size_t tnum = 0; tnum < num_threads; tnum++) {
s = pthread_join(tinfo[tnum].thread_id, &res);
if (s != 0)
- handle_error_en(s, "pthread_join");
+ errc(EXIT_FAILURE, s, "pthread_join");
\&
printf("Joined with thread %d; returned value was %s\[rs]n",
tinfo[tnum].thread_num, (char *) res);