… | |
… | |
15 | |
15 | |
16 | ///////////////////////////////////////////////////////////////////////////// |
16 | ///////////////////////////////////////////////////////////////////////////// |
17 | |
17 | |
18 | #ifdef _WIN32 |
18 | #ifdef _WIN32 |
19 | |
19 | |
20 | #define NTDDI_VERSION NTDDI_WIN2K // needed to get win2000 api calls |
20 | //#define NTDDI_VERSION NTDDI_WIN2K // needed to get win2000 api calls, fails with mingw |
21 | #define _WIN32_WINNT 0x400 |
21 | #define _WIN32_WINNT 0x400 // maybe working alternative for mingw |
22 | #include <stdio.h>//D |
22 | #include <stdio.h>//D |
23 | #include <fcntl.h> |
23 | #include <fcntl.h> |
24 | #include <io.h> |
24 | #include <io.h> |
25 | #include <time.h> |
25 | #include <time.h> |
26 | #include <winsock2.h> |
26 | #include <winsock2.h> |
27 | #include <process.h> |
27 | #include <process.h> |
28 | #include <windows.h> |
28 | #include <windows.h> |
|
|
29 | |
|
|
30 | /* work around some bugs in ptw32 */ |
|
|
31 | #if defined(__MINGW32__) && defined(_TIMESPEC_DEFINED) |
|
|
32 | #define HAVE_STRUCT_TIMESPEC 1 |
|
|
33 | #endif |
|
|
34 | |
29 | #include <pthread.h> |
35 | #include <pthread.h> |
30 | #define sigset_t int |
36 | #define sigset_t int |
31 | #define sigfillset(a) |
37 | #define sigfillset(a) |
32 | #define pthread_sigmask(a,b,c) |
38 | #define pthread_sigmask(a,b,c) |
33 | #define sigaddset(a,b) |
39 | #define sigaddset(a,b) |
… | |
… | |
160 | #define respipe_write(a,b,c) write ((a), (b), (c)) |
166 | #define respipe_write(a,b,c) write ((a), (b), (c)) |
161 | #define respipe_close(a) close ((a)) |
167 | #define respipe_close(a) close ((a)) |
162 | |
168 | |
163 | #endif |
169 | #endif |
164 | |
170 | |
|
|
171 | #if __linux && __GNUC__ >= 4 && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 3 && 0 /* also check arch */ |
|
|
172 | /* __thread has little to no advantage over pthread_* in most configurations, so this is not used */ |
|
|
173 | # define X_TLS_DECLARE(varname) __thread void *varname |
|
|
174 | # define X_TLS_INIT(varname) |
|
|
175 | # define X_TLS_SET(varname,value) varname = (value) |
|
|
176 | # define X_TLS_GET(varname) varname |
|
|
177 | #else |
|
|
178 | # define X_TLS_DECLARE(varname) pthread_key_t varname |
|
|
179 | # define X_TLS_INIT(varname) do { if (pthread_key_create (&(varname), 0)) abort (); } while (0) |
|
|
180 | # define X_TLS_SET(varname,value) pthread_setspecific (varname, (value)) |
|
|
181 | # define X_TLS_GET(varname) pthread_getspecific (varname) |
165 | #endif |
182 | #endif |
166 | |
183 | |
|
|
184 | #endif |
|
|
185 | |