PTHREAD_ATTR_SETSTACK(3) | Library Functions Manual | PTHREAD_ATTR_SETSTACK(3)

# NAME

`pthread_attr_setstack`, `pthread_attr_getstack` — set and get stack attributes

# SYNOPSIS

POSIX Threads Library (libpthread, -lpthread)
`#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);

# DESCRIPTION

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.

# RETURN VALUES

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.

# ERRORS

The `pthread_attr_setstack`() function will fail if:

[`EINVAL`]
  The value of stacksize is less than `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`].

# SEE ALSO

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)

# STANDARDS

`pthread_attr_setstack`() and `pthread_attr_getstack`() conform to ISO/IEC 9945-1 ANSI/IEEE (“POSIX”) Std 1003.1, 2004 Edition.

June 7, 2025 | Debian