Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 8
Set the size of the thread's guard area
#include <pthread.h>
int pthread_attr_setguardsize(
pthread_attr_t* attr,
size_t guardsize );
- 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.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
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.
- EOK
- Success.
- EINVAL
- Invalid pointer, attr, to a pthread_attr_t structure,
or guardsize is invalid.
POSIX 1003.1 XSI
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
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.
pthread_attr_getguardsize(),
pthread_attr_init(),
pthread_attr_setstackaddr().
sysconf()
Processes and Threads
chapter of Getting Started with QNX Neutrino
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 181
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/p/pthread_attr_setguardsize.html on line 181