[Previous] [Contents] [Next]

pthread_attr_setguardsize()

Set the thread guardsize attribute

Synopsis:

#include <pthread.h>

int pthread_attr_setguardsize( 
             pthread_attr_t* attr,
             size_t guardsize );

Library:

libc

Description:

The pthread_attr_setguardsize() function sets the value of the thread guardsize attribute to guardsize in the attribute structure attr.

If guardsize is 0, threads created with attr have no guard area; otherwise, a guard area of at least guardsize bytes is provided. The default guardsize can be found using the _SC_PAGESIZE constant in a call to sysconf().

The guardsize attribute controls the size of the guard area for the thread's stack. This guard area helps protect against stack overflows; guardsize bytes of extra memory is allocated at the overflow end of the stack. If a thread overflows into this buffer it receives a SIGSEGV signal.

The guardsize attribute is provided because:

Returns:

EOK
Success.
EINVAL
Invalid pointer, attr, to a pthread_attr_t structure, or guardsize is invalid.

Classification:

Standard Unix

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

Caveats:

If the caller is providing a stack (using attr's stackaddr attribute; see pthread_attr_setstackaddr()), the guardsize is ignored and there's no stack overflow protection for that thread.

The guardsize argument is completely ignored when using a physical mode memory manager.

See also:

pthread_attr_getguardsize(), pthread_attr_setstackaddr(). sysconf()


[Previous] [Contents] [Next]