On Sat, Oct 25, 2008 at 12:31 AM, Michael Kerrisk <mtk.manpages@xxxxxxxxxxxxxx> wrote: > .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk > .\" <mtk.manpages@xxxxxxxxx> > .\" > .\" Permission is granted to make and distribute verbatim copies of this > .\" manual provided the copyright notice and this permission notice are > .\" preserved on all copies. > .\" > .\" Permission is granted to copy and distribute modified versions of this > .\" manual under the conditions for verbatim copying, provided that the > .\" entire resulting derived work is distributed under the terms of a > .\" permission notice identical to this one. > .\" > .\" Since the Linux kernel and libraries are constantly changing, this > .\" manual page may be incorrect or out-of-date. The author(s) assume no > .\" responsibility for errors or omissions, or for damages resulting from > .\" the use of the information contained herein. The author(s) may not > .\" have taken the same level of care in the production of this manual, > .\" which is licensed free of charge, as they might when working > .\" professionally. > .\" > .\" Formatted or processed versions of this manual, if unaccompanied by > .\" the source, must acknowledge the copyright and authors of this work. > .\" > .TH PTHREAD_ATTR_SETSTACK 3 2008-10-24 "Linux" "Linux Programmer's Manual" > .SH NAME > pthread_attr_setstack, pthread_attr_getstack \- set/get stack > attributes in thread attributes object > .SH SYNOPSIS > .nf > .B #include <pthread.h> > > .BI "int pthread_attr_setstack(pthread_attr_t *" attr , > .BI " void *" stackaddr ", size_t " stacksize ); > .BI "int pthread_attr_getstack(pthread_attr_t *" attr , > .BI " void **" stackaddr ", size_t *" stacksize ); > .sp > Compile and link with \fI\-pthread\fP. > .fi > .sp > .in -4n > Feature Test Macro Requirements for glibc (see > .BR feature_test_macros (7)): > .in > .sp > .ad l > .BR pthread_attr_getstack (), > .BR pthread_attr_setstack (): > _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 > .ad b > .SH DESCRIPTION > The > .BR pthread_attr_setscope () ^^^^^ This looks like a copy/paste error - it's also present in at least one of the other manpages you posted. I guess this should be pthread_attr_setstack(). > function sets the stack address and stack size attributes of the > thread attributes object referred to by > .I attr > to the values specified in > .IR stackaddr > and > .IR stacksize , > respectively. > These attributes specify the location and size of the stack that should > be used by a thread that is created using the thread attributes object > .IR attr . > > .I stackaddr > should point to the lowest addressable byte of a buffer of > .I stacksize > bytes that was allocated by the caller. > The pages of the allocated buffer should be both readable and writable. > > The > .BR pthread_attr_getstack () > function returns the stack address and stack size attributes of the > thread attributes object referred to by > .I attr > in the buffers pointed to by > .IR stackaddr > and > .IR stacksize , > respectively. > .SH RETURN VALUE > On success, these functions return 0; > on error, they return a non-zero error number. > .SH ERRORS > .BR pthread_attr_setstacksize () > can fail with the following error: > .TP > .B EINVAL > .I stackaddr > is less than > .BR PTHREAD_STACK_MIN > (16384) bytes. > On some systems, this error may also occur if > .IR stackaddr > or > .IR "stackaddr\ +\ stacksize" > is not suitably aligned. > .PP > POSIX.1-2001 also documents an > .BR EACCES > error if the stack area described by > .I stackaddr > and > .I stacksize > is not both readable and writable by the caller. > .SH VERSIONS > These functions are provided by glibc since version 2.2. > .SH CONFORMING TO > POSIX.1-2001. > .SH NOTES > These functions are provided for applications that must ensure that > a thread's stack is placed in a particular location. > For most applications, this is not necessary, > and the use of these functions should be avoided. > (Use > .BR pthread_attr_setstacksize (3) > if an application simply requires a stack size other than the default.) > > When an application employs > .BR pthread_attr_setstack (), > it takes over the responsibility of allocating the stack. > Any guard size value that was set using > .BR pthread_attr_setguardsize (3) > is ignored. > If deemed necessary, > it is the application's responsibility to allocate a guard area > (one or more pages protected against reading and writing) > to handle the possibility of stack overflow. > > The address specified in > .I stackaddr > should be suitably aligned: > for full portability, align it on a page boundary > .RI ( sysconf(_SC_PAGESIZE) ). > .BR posix_memalign (3) > may be useful for allocation. > Probably, > .IR stacksize > should also be a multiple of the system page size. > > If > .I attr > is used to create multiple threads, then the caller must change the > stack address attribute between calls to > .BR pthread_create (3); > otherwise, the threads will attempt to use the same memory area > for their stacks, and chaos will ensue. > .BR > .SH EXAMPLE > See > .BR pthread_attr_init (3). > .SH SEE ALSO > .BR mmap (2), > .BR mprotect (2), > .BR posix_memalign (3), > .BR pthread_attr_init (3), > .BR pthread_attr_setguardsize (3), > .BR pthread_attr_setstackaddr (3), > .BR pthread_attr_setstacksize (3), > .BR pthread_create (3), > .BR pthreads (7) > -- > To unsubscribe from this list: send the line "unsubscribe linux-man" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html