summaryrefslogtreecommitdiffstats
path: root/man3/pthread_attr_setstacksize.3
blob: 7cd88b88233e0a5b5e5927b909ee1a42599467b6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
'\" t
.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH pthread_attr_setstacksize 3 (date) "Linux man-pages (unreleased)"
.SH NAME
pthread_attr_setstacksize, pthread_attr_getstacksize \- set/get stack size
attribute in thread attributes object
.SH LIBRARY
POSIX threads library
.RI ( libpthread ", " \-lpthread )
.SH SYNOPSIS
.nf
.B #include <pthread.h>
.P
.BI "int pthread_attr_setstacksize(pthread_attr_t *" attr \
", size_t " stacksize );
.BI "int pthread_attr_getstacksize(const pthread_attr_t *restrict " attr ,
.BI "                              size_t *restrict " stacksize );
.fi
.SH DESCRIPTION
The
.BR pthread_attr_setstacksize ()
function sets the stack size attribute of the
thread attributes object referred to by
.I attr
to the value specified in
.IR stacksize .
.P
The stack size attribute determines the minimum size (in bytes) that
will be allocated for threads created using the thread attributes object
.IR attr .
.P
The
.BR pthread_attr_getstacksize ()
function returns the stack size attribute of the
thread attributes object referred to by
.I attr
in the buffer pointed to by
.IR stacksize .
.SH RETURN VALUE
On success, these functions return 0;
on error, they return a nonzero error number.
.SH ERRORS
.BR pthread_attr_setstacksize ()
can fail with the following error:
.TP
.B EINVAL
The stack size is less than
.B PTHREAD_STACK_MIN
(16384) bytes.
.P
On some systems,
.\" e.g., MacOS
.BR pthread_attr_setstacksize ()
can fail with the error
.B EINVAL
if
.I stacksize
is not a multiple of the system page size.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.MR attributes 7 .
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR pthread_attr_setstacksize (),
.BR pthread_attr_getstacksize ()
T}	Thread safety	MT-Safe
.TE
.SH VERSIONS
These functions are provided since glibc 2.1.
.SH STANDARDS
POSIX.1-2001, POSIX.1-2008.
.SH NOTES
For details on the default stack size of new threads, see
.MR pthread_create 3 .
.P
A thread's stack size is fixed at the time of thread creation.
Only the main thread can dynamically grow its stack.
.P
The
.MR pthread_attr_setstack 3
function allows an application to set both the size and location
of a caller-allocated stack that is to be used by a thread.
.SH BUGS
As at glibc 2.8,
if the specified
.I stacksize
is not a multiple of
.B STACK_ALIGN
(16 bytes on most architectures), it may be rounded
.IR downward ,
in violation of POSIX.1, which says that the allocated stack will
be at least
.I stacksize
bytes.
.SH EXAMPLES
See
.MR pthread_create 3 .
.SH SEE ALSO
.MR getrlimit 2 ,
.MR pthread_attr_init 3 ,
.MR pthread_attr_setguardsize 3 ,
.MR pthread_attr_setstack 3 ,
.MR pthread_create 3 ,
.MR pthreads 7