mirror of https://github.com/mkerrisk/man-pages
getdents.2, pthread_attr_init.3, pthread_create.3, pthread_getattr_np.3, pthread_setaffinity_np.3, pthread_setschedparam.3, pthread_tryjoin_np.3: Use consistent error-handling function names
Many older pages use a handle_error() macro to do simple error handling from system and library function calls. Switch these pages to do similar. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
13466d9898
commit
940c8ce244
|
@ -24,7 +24,7 @@
|
|||
.\" Modified 22 July 1995 by Michael Chastain <mec@duracef.shout.net>:
|
||||
.\" Derived from 'readdir.2'.
|
||||
.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
|
||||
.TH GETDENTS 2 2008-10-28 "Linux" "Linux Programmer's Manual"
|
||||
.TH GETDENTS 2 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
getdents \- get directory entries
|
||||
.SH SYNOPSIS
|
||||
|
@ -191,8 +191,8 @@ i-node# file type d_reclen d_off d_name
|
|||
#include <sys/stat.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\
|
||||
} while (0)
|
||||
#define handle_error(msg) \\
|
||||
do { perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
struct linux_dirent {
|
||||
long d_ino;
|
||||
|
@ -216,12 +216,12 @@ main(int argc, char *argv[])
|
|||
|
||||
fd = open(argc > 1 ? argv[1] : ".", O_RDONLY | O_DIRECTORY);
|
||||
if (fd == \-1)
|
||||
errExit("open");
|
||||
handle_error("open");
|
||||
|
||||
for ( ; ; ) {
|
||||
nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);
|
||||
if (nread == \-1)
|
||||
errExit("getdents");
|
||||
handle_error("getdents");
|
||||
|
||||
if (nread == 0)
|
||||
break;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_ATTR_INIT 3 2008-10-24 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_ATTR_INIT 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_attr_init, pthread_attr_destroy \- initialize and destroy
|
||||
thread attributes object
|
||||
|
@ -152,8 +152,8 @@ Thread attributes:
|
|||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define errExitEN(en, msg) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE); }
|
||||
#define handle_error_en(en, msg) \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
static void
|
||||
display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
||||
|
@ -165,7 +165,7 @@ display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getdetachstate(attr, &i);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getdetachstate");
|
||||
handle_error_en(s, "pthread_attr_getdetachstate");
|
||||
printf("%sDetach state = %s\\n", prefix,
|
||||
(i == PTHREAD_CREATE_DETACHED) ? "PTHREAD_CREATE_DETACHED" :
|
||||
(i == PTHREAD_CREATE_JOINABLE) ? "PTHREAD_CREATE_JOINABLE" :
|
||||
|
@ -173,7 +173,7 @@ display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getscope(attr, &i);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getscope");
|
||||
handle_error_en(s, "pthread_attr_getscope");
|
||||
printf("%sScope = %s\\n", prefix,
|
||||
(i == PTHREAD_SCOPE_SYSTEM) ? "PTHREAD_SCOPE_SYSTEM" :
|
||||
(i == PTHREAD_SCOPE_PROCESS) ? "PTHREAD_SCOPE_PROCESS" :
|
||||
|
@ -181,7 +181,7 @@ display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getinheritsched(attr, &i);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getinheritsched");
|
||||
handle_error_en(s, "pthread_attr_getinheritsched");
|
||||
printf("%sInherit scheduler = %s\\n", prefix,
|
||||
(i == PTHREAD_INHERIT_SCHED) ? "PTHREAD_INHERIT_SCHED" :
|
||||
(i == PTHREAD_EXPLICIT_SCHED) ? "PTHREAD_EXPLICIT_SCHED" :
|
||||
|
@ -189,7 +189,7 @@ display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getschedpolicy(attr, &i);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getschedpolicy");
|
||||
handle_error_en(s, "pthread_attr_getschedpolicy");
|
||||
printf("%sScheduling policy = %s\\n", prefix,
|
||||
(i == SCHED_OTHER) ? "SCHED_OTHER" :
|
||||
(i == SCHED_FIFO) ? "SCHED_FIFO" :
|
||||
|
@ -198,17 +198,17 @@ display_pthread_attr(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getschedparam(attr, &sp);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getschedparam");
|
||||
handle_error_en(s, "pthread_attr_getschedparam");
|
||||
printf("%sScheduling priority = %d\\n", prefix, sp.sched_priority);
|
||||
|
||||
s = pthread_attr_getguardsize(attr, &v);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getguardsize");
|
||||
handle_error_en(s, "pthread_attr_getguardsize");
|
||||
printf("%sGuard size = %d bytes\\n", prefix, v);
|
||||
|
||||
s = pthread_attr_getstack(attr, &stkaddr, &v);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getstack");
|
||||
handle_error_en(s, "pthread_attr_getstack");
|
||||
printf("%sStack address = %p\\n", prefix, stkaddr);
|
||||
printf("%sStack size = 0x%x bytes\\n", prefix, v);
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ thread_start(void *arg)
|
|||
|
||||
s = pthread_getattr_np(pthread_self(), &gattr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_getattr_np");
|
||||
handle_error_en(s, "pthread_getattr_np");
|
||||
|
||||
printf("Thread attributes:\\n");
|
||||
display_pthread_attr(&gattr, "\\t");
|
||||
|
@ -255,37 +255,37 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_attr_init(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_init");
|
||||
handle_error_en(s, "pthread_attr_init");
|
||||
|
||||
s = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setdetachstate");
|
||||
handle_error_en(s, "pthread_attr_setdetachstate");
|
||||
|
||||
s = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setinheritsched");
|
||||
handle_error_en(s, "pthread_attr_setinheritsched");
|
||||
|
||||
stack_size = strtoul(argv[1], NULL, 0);
|
||||
|
||||
s = posix_memalign(&sp, sysconf(_SC_PAGESIZE), stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "posix_memalign");
|
||||
handle_error_en(s, "posix_memalign");
|
||||
|
||||
printf("posix_memalign() allocated at %p\\n", sp);
|
||||
|
||||
s = pthread_attr_setstack(&attr, sp, stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setstack");
|
||||
handle_error_en(s, "pthread_attr_setstack");
|
||||
}
|
||||
|
||||
s = pthread_create(&thr, attrp, &thread_start, NULL);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_create");
|
||||
handle_error_en(s, "pthread_create");
|
||||
|
||||
if (attrp != NULL) {
|
||||
s = pthread_attr_destroy(attrp);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_destroy");
|
||||
handle_error_en(s, "pthread_attr_destroy");
|
||||
}
|
||||
|
||||
pause(); /* Terminates when other thread calls exit() */
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_CREATE 3 2008-11-05 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_CREATE 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_create \- create a new thread
|
||||
.SH SYNOPSIS
|
||||
|
@ -241,12 +241,11 @@ Joined with thread 3; returned value was SERVUS
|
|||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/* Simple error handling functions */
|
||||
#define handle_error_en(en, msg) \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
#define errExit(msg) { perror(msg); exit(EXIT_FAILURE); }
|
||||
|
||||
#define errExitEN(en, msg) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE); }
|
||||
#define handle_error(msg) \\
|
||||
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 */
|
||||
|
@ -268,7 +267,7 @@ thread_start(void *arg)
|
|||
|
||||
uargv = strdup(tinfo\->argv_string);
|
||||
if (uargv == NULL)
|
||||
errExit("strdup");
|
||||
handle_error("strdup");
|
||||
|
||||
for (p = uargv; *p != \(aq\\0\(aq; p++)
|
||||
*p = toupper(*p);
|
||||
|
@ -307,19 +306,19 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_attr_init(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_init");
|
||||
handle_error_en(s, "pthread_attr_init");
|
||||
|
||||
if (stack_size > 0) {
|
||||
s = pthread_attr_setstacksize(&attr, stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setstacksize");
|
||||
handle_error_en(s, "pthread_attr_setstacksize");
|
||||
}
|
||||
|
||||
/* Allocate memory for pthread_create() arguments */
|
||||
|
||||
tinfo = calloc(num_threads, sizeof(struct thread_info));
|
||||
if (tinfo == NULL)
|
||||
errExit("calloc");
|
||||
handle_error("calloc");
|
||||
|
||||
/* Create one thread for each command\-line argument */
|
||||
|
||||
|
@ -333,7 +332,7 @@ main(int argc, char *argv[])
|
|||
s = pthread_create(&tinfo[tnum].thread_id, &attr,
|
||||
&thread_start, &tinfo[tnum]);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_create");
|
||||
handle_error_en(s, "pthread_create");
|
||||
}
|
||||
|
||||
/* Destroy the thread attributes object, since it is no
|
||||
|
@ -341,14 +340,14 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_attr_destroy(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_destroy");
|
||||
handle_error_en(s, "pthread_attr_destroy");
|
||||
|
||||
/* Now join with each thread, and display its returned value */
|
||||
|
||||
for (tnum = 0; tnum < num_threads; tnum++) {
|
||||
s = pthread_join(tinfo[tnum].thread_id, &res);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_join");
|
||||
handle_error_en(s, "pthread_join");
|
||||
|
||||
printf("Joined with thread %d; returned value was %s\\n",
|
||||
tinfo[tnum].thread_num, (char *) res);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_GETATTR_NP 3 2008-11-07 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_GETATTR_NP 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_getattr_np \- get attributes of created thread
|
||||
.SH SYNOPSIS
|
||||
|
@ -183,8 +183,8 @@ Attributes of created thread:
|
|||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define errExitEN(en, msg) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE); }
|
||||
#define handle_error_en(en, msg) \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
static void
|
||||
display_stack_related_attributes(pthread_attr_t *attr, char *prefix)
|
||||
|
@ -195,12 +195,12 @@ display_stack_related_attributes(pthread_attr_t *attr, char *prefix)
|
|||
|
||||
s = pthread_attr_getguardsize(attr, &guard_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getguardsize");
|
||||
handle_error_en(s, "pthread_attr_getguardsize");
|
||||
printf("%sGuard size = %d bytes\\n", prefix, guard_size);
|
||||
|
||||
s = pthread_attr_getstack(attr, &stack_addr, &stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getstack");
|
||||
handle_error_en(s, "pthread_attr_getstack");
|
||||
printf("%sStack address = %p", prefix, stack_addr);
|
||||
if (stack_size > 0)
|
||||
printf(" (EOS = %p)", (char *) stack_addr + stack_size);
|
||||
|
@ -217,13 +217,13 @@ display_thread_attributes(pthread_t thread, char *prefix)
|
|||
|
||||
s = pthread_getattr_np(thread, &attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_getattr_np");
|
||||
handle_error_en(s, "pthread_getattr_np");
|
||||
|
||||
display_stack_related_attributes(&attr, prefix);
|
||||
|
||||
s = pthread_attr_destroy(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_destroy");
|
||||
handle_error_en(s, "pthread_attr_destroy");
|
||||
}
|
||||
|
||||
static void * /* Start function for thread we create */
|
||||
|
@ -279,31 +279,31 @@ get_thread_attributes_from_cl(int argc, char *argv[],
|
|||
|
||||
s = pthread_attr_init(attrp);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_init");
|
||||
handle_error_en(s, "pthread_attr_init");
|
||||
}
|
||||
|
||||
if (stack_size >= 0) {
|
||||
if (!allocate_stack) {
|
||||
s = pthread_attr_setstacksize(attrp, stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setstacksize");
|
||||
handle_error_en(s, "pthread_attr_setstacksize");
|
||||
} else {
|
||||
s = posix_memalign(&stack_addr, sysconf(_SC_PAGESIZE),
|
||||
stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "posix_memalign");
|
||||
handle_error_en(s, "posix_memalign");
|
||||
printf("Allocated thread stack at %p\\n\\n", stack_addr);
|
||||
|
||||
s = pthread_attr_setstack(attrp, stack_addr, stack_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setstacksize");
|
||||
handle_error_en(s, "pthread_attr_setstacksize");
|
||||
}
|
||||
}
|
||||
|
||||
if (guard_size >= 0) {
|
||||
s = pthread_attr_setguardsize(attrp, guard_size);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setstacksize");
|
||||
handle_error_en(s, "pthread_attr_setstacksize");
|
||||
}
|
||||
|
||||
return ret_attrp;
|
||||
|
@ -328,12 +328,12 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_create(&thr, attrp, &thread_start, NULL);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_create");
|
||||
handle_error_en(s, "pthread_create");
|
||||
|
||||
if (attrp != NULL) {
|
||||
s = pthread_attr_destroy(attrp);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_destroy");
|
||||
handle_error_en(s, "pthread_attr_destroy");
|
||||
}
|
||||
|
||||
pause(); /* Terminates when other thread calls exit() */
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_SETAFFINITY_NP 3 2008-11-07 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_SETAFFINITY_NP 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_setaffinity_np, pthread_getaffinity_np \- set/get
|
||||
CPU affinity of a thread
|
||||
|
@ -144,8 +144,9 @@ to check the resulting CPU affinity mask of the thread.
|
|||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define errExitEN(en, msg) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE); }
|
||||
#define handle_error_en(en, msg) \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
|
@ -163,13 +164,13 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_setaffinity_np");
|
||||
handle_error_en(s, "pthread_setaffinity_np");
|
||||
|
||||
/* Check the actual affinity mask assigned to the thread */
|
||||
|
||||
s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_getaffinity_np");
|
||||
handle_error_en(s, "pthread_getaffinity_np");
|
||||
|
||||
printf("Set returned by pthread_getaffinity_np() contained:\\n");
|
||||
for (j = 0; j < CPU_SETSIZE; j++)
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_SETSCHEDPARAM 3 2008-11-07 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_SETSCHEDPARAM 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_setschedparam, pthread_setschedparam \- set/get
|
||||
scheduling policy and parameters of a thread
|
||||
|
@ -224,12 +224,8 @@ rather than the thread attributes object.
|
|||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Simple error handling functions */
|
||||
|
||||
#define errExit(msg) { perror(msg); exit(EXIT_FAILURE); }
|
||||
|
||||
#define errExitEN(en, msg) { errno = en; perror(msg); \\
|
||||
exit(EXIT_FAILURE); }
|
||||
#define handle_error_en(en, msg) \\
|
||||
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)
|
||||
|
||||
static void
|
||||
usage(char *prog_name, char *msg)
|
||||
|
@ -284,7 +280,7 @@ display_thread_sched_attr(char *msg)
|
|||
|
||||
s = pthread_getschedparam(pthread_self(), &policy, ¶m);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_getschedparam");
|
||||
handle_error_en(s, "pthread_getschedparam");
|
||||
|
||||
printf("%s\\n", msg);
|
||||
display_sched_attr(policy, ¶m);
|
||||
|
@ -339,7 +335,7 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_setschedparam(pthread_self(), policy, ¶m);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_setschedparam");
|
||||
handle_error_en(s, "pthread_setschedparam");
|
||||
}
|
||||
|
||||
display_thread_sched_attr("Scheduler settings of main thread");
|
||||
|
@ -352,7 +348,7 @@ main(int argc, char *argv[])
|
|||
if (!use_null_attrib) {
|
||||
s = pthread_attr_init(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_init");
|
||||
handle_error_en(s, "pthread_attr_init");
|
||||
attrp = &attr;
|
||||
}
|
||||
|
||||
|
@ -366,7 +362,7 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_attr_setinheritsched(&attr, inheritsched);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setinheritsched");
|
||||
handle_error_en(s, "pthread_attr_setinheritsched");
|
||||
}
|
||||
|
||||
if (attr_sched_str != NULL) {
|
||||
|
@ -377,10 +373,10 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_attr_setschedpolicy(&attr, policy);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setschedpolicy");
|
||||
handle_error_en(s, "pthread_attr_setschedpolicy");
|
||||
s = pthread_attr_setschedparam(&attr, ¶m);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_setschedparam");
|
||||
handle_error_en(s, "pthread_attr_setschedparam");
|
||||
}
|
||||
|
||||
/* If we initialized a thread attributes object, display
|
||||
|
@ -389,10 +385,10 @@ main(int argc, char *argv[])
|
|||
if (attrp != NULL) {
|
||||
s = pthread_attr_getschedparam(&attr, ¶m);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getschedparam");
|
||||
handle_error_en(s, "pthread_attr_getschedparam");
|
||||
s = pthread_attr_getschedpolicy(&attr, &policy);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_getschedpolicy");
|
||||
handle_error_en(s, "pthread_attr_getschedpolicy");
|
||||
|
||||
printf("Scheduler settings in \(aqattr\(aq\\n");
|
||||
display_sched_attr(policy, ¶m);
|
||||
|
@ -409,17 +405,17 @@ main(int argc, char *argv[])
|
|||
|
||||
s = pthread_create(&thread, attrp, &thread_start, NULL);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_create");
|
||||
handle_error_en(s, "pthread_create");
|
||||
|
||||
/* Destroy unneeded thread attributes object */
|
||||
|
||||
s = pthread_attr_destroy(&attr);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_attr_destroy");
|
||||
handle_error_en(s, "pthread_attr_destroy");
|
||||
|
||||
s = pthread_join(thread, NULL);
|
||||
if (s != 0)
|
||||
errExitEN(s, "pthread_join");
|
||||
handle_error_en(s, "pthread_join");
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
} /* main */
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
.\" Formatted or processed versions of this manual, if unaccompanied by
|
||||
.\" the source, must acknowledge the copyright and authors of this work.
|
||||
.\"
|
||||
.TH PTHREAD_TRYJOIN_NP 3 2008-11-07 "Linux" "Linux Programmer's Manual"
|
||||
.TH PTHREAD_TRYJOIN_NP 3 2008-11-11 "Linux" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
pthread_tryjoin_np, pthread_timedjoin_np \- try to join with a
|
||||
terminated thread
|
||||
|
|
Loading…
Reference in New Issue