man.bsd.lv manual page server

Manual Page Search Parameters

PTHREAD_ATTR_GETSTACK(3) Library Functions Manual PTHREAD_ATTR_GETSTACK(3)

pthread_attr_getstack, pthread_attr_setstack, pthread_attr_getstacksize, pthread_attr_setstacksize, pthread_attr_getstackaddr, pthread_attr_setstackaddrget and set thread stack attributes

library “libpthread”

#include <pthread.h>

int
pthread_attr_getstack(const pthread_attr_t * restrict attr, void ** restrict stackaddr, size_t * restrict stacksize);

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

int
pthread_attr_getstacksize(const pthread_attr_t * restrict attr, size_t * restrict stacksize);

int
pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);

int
pthread_attr_getstackaddr(const pthread_attr_t * restrict attr, void ** restrict stackaddr);

int
pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);

The () and () functions get and set, respectively, the thread stack attributes stackaddr and stacksize in the attr object. The remaining four functions behave similarly, but instead of getting or setting both stackaddr and stacksize, these get and set the values individually.

The stacksize parameter is defined to be the minimum stack size (in bytes) allocated for the thread's stack during the creation of the thread. The stackaddr attribute specifies the location of storage to be used for the thread's stack. All pages within the stack described by stackaddr and stacksize should be both readable and writable by the thread.

The behavior is undefined in all functions if the attr parameter does not refer to an attribute object initialized by using pthread_attr_init(3) prior to the call. In addition, undefined behavior may follow if the () function is called before the stackaddr attribute has been set.

The rationale behind these functions is to address cases where an application may be used in an environment where the stack of a thread must be placed to some particular region of memory. For the majority of applications, this is seldom necessary, and the use of these functions should be generally avoided. At least few potential caveats can be mentioned.

If successful, these functions return 0. Otherwise, an error number is returned to indicate the error.

No errors are defined for the three functions that obtain the stack values. The three functions that set the stack values may fail if:

[]
There was insufficient memory to complete the operation.

The pthread_attr_setstacksize() function may additionally fail if:

[]
The specified stacksize is less than PTHREAD_STACK_MIN or exceeds some system-imposed limit.

pthread_attr(3), pthread_attr_setguardsize(3)

All described functions conform to IEEE Std 1003.1-2001 (“POSIX.1”). Note that pthread_attr_getstackaddr() and pthread_attr_setstackaddr() were however removed from the specification in the IEEE Std 1003.1-2008 (“POSIX.1”) revision.

July 9, 2010 NetBSD-9.2