pthread_attr_setstack()

Updated: April 19, 2023

Set the thread-creation stack attributes

Synopsis:

#include <pthread.h>

int pthread_attr_setstack( pthread_attr_t *attr,
                           void *stackaddr,
                           size_t stacksize );

Arguments:

attr
A pointer to the pthread_attr_t structure that defines the attributes to use when creating new threads. For more information, see pthread_attr_init().
stackaddr
The base address (i.e. the lowest addressable byte) of the created thread's stack.
stacksize
The size of the thread stack, in bytes.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pthread_attr_setstack() function sets the stack attributes that specify the area of storage to be used for the created thread's stack. The value of stacksize must be at least PTHREAD_STACK_MIN.

When you specify the storage area for the stack, the process manager won't create a guard page. We recommend that you create an inaccessible guard page at the end of the stack (i.e. immediately before the lowest address) so the process manager can detect stack overflow. By inaccessible, we mean it should be assigned the PROT_NONE access type; for more information, see the mmap() reference.

Note: If you provide a stack, take into consideration that the system takes up approximately 256 bytes.

Returns:

EOK
Success.
EINVAL
The stacksize is non-zero and less than PTHREAD_STACK_MIN.

Classification:

POSIX 1003.1 TSA TSS

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes