- add sources.
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / libraries / third_party / pthreads-win32 / pthread_attr_setstacksize.c
1 /*
2  * pthread_attr_setstacksize.c
3  *
4  * Description:
5  * This translation unit implements operations on thread attribute objects.
6  *
7  * --------------------------------------------------------------------------
8  *
9  *      Pthreads-win32 - POSIX Threads Library for Win32
10  *      Copyright(C) 1998 John E. Bossom
11  *      Copyright(C) 1999,2005 Pthreads-win32 contributors
12  * 
13  *      Contact Email: rpj@callisto.canberra.edu.au
14  * 
15  *      The current list of contributors is contained
16  *      in the file CONTRIBUTORS included with the source
17  *      code distribution. The list can also be seen at the
18  *      following World Wide Web location:
19  *      http://sources.redhat.com/pthreads-win32/contributors.html
20  * 
21  *      This library is free software; you can redistribute it and/or
22  *      modify it under the terms of the GNU Lesser General Public
23  *      License as published by the Free Software Foundation; either
24  *      version 2 of the License, or (at your option) any later version.
25  * 
26  *      This library is distributed in the hope that it will be useful,
27  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
28  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29  *      Lesser General Public License for more details.
30  * 
31  *      You should have received a copy of the GNU Lesser General Public
32  *      License along with this library in the file COPYING.LIB;
33  *      if not, write to the Free Software Foundation, Inc.,
34  *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
35  */
36
37 #include "pthread.h"
38 #include "implement.h"
39
40
41 int
42 pthread_attr_setstacksize (pthread_attr_t * attr, size_t stacksize)
43      /*
44       * ------------------------------------------------------
45       * DOCPUBLIC
46       *      This function specifies the size of the stack on
47       *      which threads created with 'attr' will run.
48       *
49       * PARAMETERS
50       *      attr
51       *              pointer to an instance of pthread_attr_t
52       *
53       *      stacksize
54       *              stack size, in bytes.
55       *
56       *
57       * DESCRIPTION
58       *      This function specifies the size of the stack on
59       *      which threads created with 'attr' will run.
60       *
61       *      NOTES:
62       *              1)      Function supported only if this macro is
63       *                      defined:
64       *
65       *                              _POSIX_THREAD_ATTR_STACKSIZE
66       *
67       *              2)      Find the default first (using
68       *                      pthread_attr_getstacksize), then increase
69       *                      by multiplying.
70       *
71       *              3)      Only use if thread needs more than the
72       *                      default.
73       *
74       * RESULTS
75       *              0               successfully set stack size,
76       *              EINVAL          'attr' is invalid or stacksize too
77       *                              small or too big.
78       *              ENOSYS          function not supported
79       *
80       * ------------------------------------------------------
81       */
82 {
83 #if defined(_POSIX_THREAD_ATTR_STACKSIZE)
84
85 #if PTHREAD_STACK_MIN > 0
86
87   /*  Verify that the stack size is within range. */
88   if (stacksize < PTHREAD_STACK_MIN)
89     {
90       return EINVAL;
91     }
92
93 #endif
94
95   if (ptw32_is_attr (attr) != 0)
96     {
97       return EINVAL;
98     }
99
100   /* Everything is okay. */
101   (*attr)->stacksize = stacksize;
102   return 0;
103
104 #else
105
106   return ENOSYS;
107
108 #endif /* _POSIX_THREAD_ATTR_STACKSIZE */
109
110 }