NAME
pthread_attr_getstackaddr
pthread_attr_setstackaddr —
get and set the stackaddr attribute
SYNOPSIS
[THR
TSA]
#include <pthread.h>
[OB] int pthread_attr_getstackaddr(const pthread_attr_t *restrict attr,
void **restrict stackaddr);
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
DESCRIPTION
The pthread_attr_getstackaddr () and
pthread_attr_setstackaddr () functions,
respectively, shall get and set the thread creation
stackaddr attribute in the attr
object.
The stackaddr attribute specifies the location of storage to be used for the created thread's stack. The size of the storage shall be at least {PTHREAD_STACK_MIN}.
RETURN VALUE
Upon successful completion,
pthread_attr_getstackaddr () and
pthread_attr_setstackaddr () shall return a value of
0; otherwise, an error number shall be returned to indicate the error.
The pthread_attr_getstackaddr () function
stores the stackaddr attribute value in
stackaddr if successful.
ERRORS
These functions may fail if:
- [EINVAL]
- The value specified by attr does not refer to an initialized thread attribute object.
These functions shall not return an error code of [EINTR].
EXAMPLES
None.
APPLICATION USAGE
The specification of the stackaddr attribute presents several ambiguities that make portable use of these interfaces impossible. The description of the single address parameter as a "stack" does not specify a particular relationship between the address and the "stack" implied by that address. For example, the address may be taken as the low memory address of a buffer intended for use as a stack, or it may be taken as the address to be used as the initial stack pointer register value for the new thread. These two are not the same except for a machine on which the stack grows "up" from low memory to high, and on which a "push" operation first stores the value in memory and then increments the stack pointer register. Further, on a machine where the stack grows "down" from high memory to low, interpretation of the address as the "low memory" address requires a determination of the intended size of the stack. IEEE Std 1003.1-2001 (“POSIX.1”) has introduced the new interfaces pthread_attr_setstack(3) and pthread_attr_getstack(3) to resolve these ambiguities.
After a successful call to
pthread_attr_setstackaddr (), the storage area
specified by the stackaddr parameter is under the control
of the implementation, as described in
xsh_chap02_09(3).
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
pthread_attr_destroy(3), pthread_attr_getdetachstate(3), pthread_attr_getstack(3), pthread_attr_getstacksize(3), pthread_attr_setstack(3), pthread_create(3), the Base Definitions volume of IEEE Std 1003.1-2001 (“POSIX.1”), <limits.h>, <pthread.h>
CHANGE HISTORY
First released in Issue 5. Included for alignment with the POSIX Threads Extension.
Issue 6
The pthread_attr_getstackaddr () and
pthread_attr_setstackaddr () functions are marked as
part of the Threads and Thread Stack Address Attribute options.
The
restrict keyword
is added to the pthread_attr_getstackaddr ()
prototype for alignment with the ISO/IEC 9899:1999
(“ISO C99”) standard.
These functions are marked obsolescent.
IEEE Std 1003.1-2001 (“POSIX.1”)/Cor 2-2004, item XSH/TC2/D6/85 is applied, updating the APPLICATION USAGE section to refer to xsh_chap02_09(3).
IEEE Std 1003.1-2001 (“POSIX.1”)/Cor 2-2004, item XSH/TC2/D6/86 is applied, updating the ERRORS section to include optional errors for the case when attr refers to an uninitialized thread attribute object.
End of informative text. footer end