pthread_attr_setguardsize man page on Hurd

Man page or keyword search:  
man Server   6387 pages
apropos Keyword Search (all sections)
Output format
Hurd logo
[printable version]

PTHREAD_ATTR_SETGUARDSIZE(3Linux Programmer's ManuPTHREAD_ATTR_SETGUARDSIZE(3)

NAME
       pthread_attr_setguardsize,  pthread_attr_getguardsize  -	 set/get guard
       size attribute in thread attributes object

SYNOPSIS
       #include <pthread.h>

       int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
       int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);

       Compile and link with -pthread.

DESCRIPTION
       The pthread_attr_setguardsize() function sets the guard size  attribute
       of the thread attributes object referred to by attr to the value speci‐
       fied in guardsize.

       If guardsize is greater than 0, then for each new thread created	 using
       attr  the  system  allocates an additional region of at least guardsize
       bytes at the end of the thread's stack to act as the guard area for the
       stack (but see BUGS).

       If  guardsize  is 0, then new threads created with attr will not have a
       guard area.

       The default guard size is the same as the system page size.

       If  the	stack  address	attribute  has	been  set   in	 attr	(using
       pthread_attr_setstack(3) or pthread_attr_setstackaddr(3)), meaning that
       the caller is allocating	 the  thread's	stack,	then  the  guard  size
       attribute is ignored (i.e., no guard area is created by the system): it
       is the application's responsibility to handle stack  overflow  (perhaps
       by  using mprotect(2) to manually define a guard area at the end of the
       stack that it has allocated).

       The  pthread_attr_getguardsize()	 function  returns  the	  guard	  size
       attribute  of  the  thread attributes object referred to by attr in the
       buffer pointed to by guardsize.

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

ERRORS
       POSIX.1-2001 documents an EINVAL error if attr or guardsize is invalid.
       On Linux these functions always succeed (but portable and  future-proof
       applications should nevertheless handle a possible error return).

VERSIONS
       These functions are provided by glibc since version 2.1.

CONFORMING TO
       POSIX.1-2001.

NOTES
       A  guard	 area  consists	 of virtual memory pages that are protected to
       prevent read and write access.  If a thread overflows  its  stack  into
       the guard area, then, on most hard architectures, it receives a SIGSEGV
       signal, thus notifying it of the overflow.  Guard areas start  on  page
       boundaries,  and	 the guard size is internally rounded up to the system
       page size when creating	a  thread.   (Nevertheless,  pthread_attr_get‐
       guardsize()  returns  the  guard size that was set by pthread_attr_set‐
       guardsize().)

       Setting a guard size of 0 may be useful to save memory in  an  applica‐
       tion  that creates many threads and knows that stack overflow can never
       occur.

       Choosing a guard size larger than the default size may be necessary for
       detecting  stack	 overflows if a thread allocates large data structures
       on the stack.

BUGS
       As at glibc 2.8, the NPTL threading implementation includes  the	 guard
       area  within  the  stack	 size allocation, rather than allocating extra
       space at the end of the stack, as POSIX.1 requires.  (This  can	result
       in  an  EINVAL  error from pthread_create(3) if the guard size value is
       too large, leaving no space for the actual stack.)

       The obsolete LinuxThreads implementation did the right thing,  allocat‐
       ing extra space at the end of the stack for the guard area.

EXAMPLE
       See pthread_getattr_np(3).

SEE ALSO
       mmap(2),	 mprotect(2),  pthread_attr_init(3), pthread_attr_setstack(3),
       pthread_attr_setstacksize(3), pthread_create(3), pthreads(7)

COLOPHON
       This page is part of release 3.55 of the Linux  man-pages  project.   A
       description  of	the project, and information about reporting bugs, can
       be found at http://www.kernel.org/doc/man-pages/.

Linux				  2008-10-24	  PTHREAD_ATTR_SETGUARDSIZE(3)
[top]

List of man pages available for Hurd

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net