… | |
… | |
144 | sigset_t fullsigset, oldsigset; |
144 | sigset_t fullsigset, oldsigset; |
145 | pthread_attr_t attr; |
145 | pthread_attr_t attr; |
146 | |
146 | |
147 | pthread_attr_init (&attr); |
147 | pthread_attr_init (&attr); |
148 | pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); |
148 | pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); |
149 | #if X_STACKSIZE > 0 |
|
|
150 | pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN < X_STACKSIZE ? X_STACKSIZE : PTHREAD_STACK_MIN); |
149 | pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN < X_STACKSIZE ? X_STACKSIZE : PTHREAD_STACK_MIN); |
151 | #endif |
|
|
152 | #ifdef PTHREAD_SCOPE_PROCESS |
150 | #ifdef PTHREAD_SCOPE_PROCESS |
153 | pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS); |
151 | pthread_attr_setscope (&attr, PTHREAD_SCOPE_PROCESS); |
154 | #endif |
152 | #endif |
155 | |
153 | |
156 | sigfillset (&fullsigset); |
154 | sigfillset (&fullsigset); |
… | |
… | |
168 | #define respipe_write(a,b,c) write ((a), (b), (c)) |
166 | #define respipe_write(a,b,c) write ((a), (b), (c)) |
169 | #define respipe_close(a) close ((a)) |
167 | #define respipe_close(a) close ((a)) |
170 | |
168 | |
171 | #endif |
169 | #endif |
172 | |
170 | |
|
|
171 | #if __linux && __GNUC__ >= 4 && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 9 |
|
|
172 | # define X_TLS_DECLARE(varname) __thread void *varname |
|
|
173 | # define X_TLS_INIT(varname) |
|
|
174 | # define X_TLS_SET(varname,value) varname = (value) |
|
|
175 | # define X_TLS_GET(varname) varname |
|
|
176 | #else |
|
|
177 | # define X_TLS_DECLARE(varname) pthread_key_t varname |
|
|
178 | # define X_TLS_INIT(varname) do { if (pthread_key_create (&(varname), 0)) abort (); } while (0) |
|
|
179 | # define X_TLS_SET(varname,value) pthread_setspecific (varname, (value)) |
|
|
180 | # define X_TLS_GET(varname) pthread_getspecific (varname) |
173 | #endif |
181 | #endif |
174 | |
182 | |
|
|
183 | #endif |
|
|
184 | |