# pthread_attr_setstackaddr

## NAME



           pthread_attr_setstackaddr, pthread_attr_getstackaddr - set/get
           stack address attribute in thread attributes object
    


## LIBRARY



           POSIX threads library (_libpthread_ , _-lpthread_)
    


## SYNOPSIS



           **#include <pthread.h>**
    
           **[[deprecated]]**
           **int pthread_attr_setstackaddr(pthread_attr_t ***_attr_**, void ***_stackaddr_**);**
           **[[deprecated]]**
           **int pthread_attr_getstackaddr(const pthread_attr_t *restrict** _attr_**,**
                                         **void **restrict** _stackaddr_**);**
    


## DESCRIPTION



           These functions are obsolete: **do not use them.** Use
           pthread_attr_setstack(3) and pthread_attr_getstack(3) instead.
    
           The **pthread_attr_setstackaddr**() function sets the stack address
           attribute of the thread attributes object referred to by _attr_ to
           the value specified in _stackaddr_.  This attribute specifies the
           location of the stack that should be used by a thread that is
           created using the thread attributes object _attr_.
    
           _stackaddr_ should point to a buffer of at least **PTHREAD_STACK_MIN**
           bytes that was allocated by the caller.  The pages of the
           allocated buffer should be both readable and writable.
    
           The **pthread_attr_getstackaddr**() function returns the stack address
           attribute of the thread attributes object referred to by _attr_ in
           the buffer pointed to by _stackaddr_.
    


## RETURN VALUE



           On success, these functions return 0; on error, they return a
           nonzero error number.
    


## ERRORS



           No errors are defined (but applications should nevertheless handle
           a possible error return).
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **pthread_attr_setstackaddr**(),         │ Thread safety │ MT-Safe │
           │ **pthread_attr_getstackaddr**()          │               │         │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           None.
    


## NOTES



           _Do not use these functions!_  They cannot be portably used, since
           they provide no way of specifying the direction of growth or the
           range of the stack.  For example, on architectures with a stack
           that grows downward, _stackaddr_ specifies the next address past the
           _highest_ address of the allocated stack area.  However, on
           architectures with a stack that grows upward, _stackaddr_ specifies
           the _lowest_ address in the allocated stack area.  By contrast, the
           _stackaddr_ used by pthread_attr_setstack(3) and
           pthread_attr_getstack(3), is always a pointer to the lowest
           address in the allocated stack area (and the _stacksize_ argument
           specifies the range of the stack).
    


* * *