PTHREAD_ATTR_SETSTACK(3) | Library Functions Manual | PTHREAD_ATTR_SETSTACK(3) |
pthread_attr_setstack
,
pthread_attr_getstack
— set
and get stack attributes
#include
<pthread.h>
int
pthread_attr_setstack
(pthread_attr_t
*attr, void
*stackaddr, size_t
stacksize);
int
pthread_attr_getstack
(const
pthread_attr_t *attr,
void **stackaddr,
size_t *stacksize);
The functions
pthread_attr_setstack
()
and
pthread_attr_getstack
(),
respectively, set and get the thread creation
stackaddr and stacksize
attributes in the attr object.
The stack attributes specify the area of storage to be used for
the created thread's stack. The base (lowest addressable byte) of the
storage shall be stackaddr, and the size of the
storage shall be stacksize bytes. The stacksize shall
be at least PTHREAD_STACK_MIN
.
On OpenBSD the provided stack must be page-aligned. It will be replaced (meaning zeroed) with a new MAP_ANON | MAP_STACK mapping. The passed memory object should not be deallocated or reused, even when the thread using it has terminated. If there is no need for a specific memory object as stack, the pthread_attr_setstacksize(3) function should be used.
Upon successful completion,
pthread_attr_setstack
() and
pthread_attr_getstack
() return a value of 0.
Otherwise, an error number is returned to indicate the error.
The pthread_attr_getstack
() function
stores the stackaddr attribute value in
stackaddr and the stacksize
attribute value in stacksize if successful.
The pthread_attr_setstack
() function will
fail if:
EINVAL
]PTHREAD_STACK_MIN
or exceeds a system-imposed
limit or the value of stackaddr is
NULL
.These functions will not return an error code of
[EINTR
].
pthread_attr_init(3), pthread_attr_setdetachstate(3), pthread_attr_setguardsize(3), pthread_attr_setstackaddr(3), pthread_attr_setstacksize(3), pthread_create(3), pthreads(3)
pthread_attr_setstack
() and
pthread_attr_getstack
() conform to ISO/IEC 9945-1
ANSI/IEEE (“POSIX”) Std 1003.1, 2004 Edition.
December 3, 2020 | OpenBSD-current |