1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #include <assert.h>
21: #include <errno.h>
22: #include <limits.h>
23: #include "pthreadP.h"
24:
25: #ifndef NEW_VERNUM
26: # define NEW_VERNUM GLIBC_2_3_3
27: #endif
28:
29:
30: int
31: __pthread_attr_setstacksize (attr, stacksize)
32: pthread_attr_t *attr;
33: size_t stacksize;
34: {
35: struct pthread_attr *iattr;
36:
37: assert (sizeof (*attr) >= sizeof (struct pthread_attr));
38: iattr = (struct pthread_attr *) attr;
39:
40:
41: if (stacksize < PTHREAD_STACK_MIN)
42: return EINVAL;
43:
44: iattr->stacksize = stacksize;
45:
46: return 0;
47: }
48:
49: #if PTHREAD_STACK_MIN == 16384
50: strong_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize)
51: #else
52: # include <shlib-compat.h>
53: versioned_symbol (libpthread, __pthread_attr_setstacksize,
54: pthread_attr_setstacksize, NEW_VERNUM);
55:
56: # if SHLIB_COMPAT(libpthread, GLIBC_2_1, NEW_VERNUM)
57:
58: int
59: __old_pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize)
60: {
61: struct pthread_attr *iattr;
62:
63: assert (sizeof (*attr) >= sizeof (struct pthread_attr));
64: iattr = (struct pthread_attr *) attr;
65:
66:
67: if (stacksize < 16384)
68: return EINVAL;
69:
70: # ifdef STACKSIZE_ADJUST
71: STACKSIZE_ADJUST;
72: # endif
73:
74: iattr->stacksize = stacksize;
75:
76: return 0;
77: }
78:
79: compat_symbol (libpthread, __old_pthread_attr_setstacksize,
80: pthread_attr_setstacksize, GLIBC_2_1);
81: # endif
82:
83: #endif