pthread_attr_setguardsize()

Set the size of the thread's guard area

Synopsis:

#include <pthread.h>

int pthread_attr_setguardsize( 
             pthread_attr_t* attr,
             size_t guardsize );

Since:

BlackBerry 10.0.0

Arguments:

attr
A pointer to the pthread_attr_t structure that defines the attributes to use when creating new threads. For more information, see pthread_attr_init().
guardsize
The new value for the size of the thread's guard area.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pthread_attr_setguardsize() function sets the size of the thread's guard area in the attribute structure attr to guardsize.

If guardsize is 0, threads created with attr have no guard area; otherwise, a guard area of at least guardsize bytes is provided. You can get the default guardsize value by specifying _SC_PAGESIZE 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:

  • Stack overflow protection can waste system resources. An application that creates many threads can save system resources by turning off guard areas if it trusts its threads not to overflow the stack.
  • When threads allocate large objects on the stack, a large guardsize is required to detect stack overflows.

Returns:

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

Classification:

POSIX 1003.1 XSI

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

Caveats:

If you provide 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.

Last modified: 2014-06-24



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus