15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* config.h */ 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PTW32_CONFIG_H 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PTW32_CONFIG_H 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/********************************************************************* 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Defaults: see target specific redefinitions below. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *********************************************************************/ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* We're building the pthreads-win32 library */ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PTW32_BUILD 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Do we know about the C type sigset_t? */ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_SIGSET_T 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the <signal.h> header file. */ 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_SIGNAL_H 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the Borland TASM32 or compatible assembler. */ 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_TASM32 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 DuplicateHandle. (eg. WinCE) */ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_DUPLICATEHANDLE 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 _beginthreadex. (eg. WinCE) */ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_CREATETHREAD 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 errno. (eg. WinCE) */ 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_ERRNO 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 calloc. (eg. WinCE) */ 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_CALLOC 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 ftime. (eg. WinCE) */ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_FTIME 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 semaphores. (eg. WinCE 2.1 or earlier) */ 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_SEM 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you need to convert string parameters to unicode. (eg. WinCE) */ 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_UNICODE_CONSTS 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if your C (not C++) compiler supports "inline" functions. */ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_C_INLINE 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Do we know about type mode_t? */ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_MODE_T 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Define if GCC has atomic builtins, i.e. __sync_* intrinsics 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * __sync_lock_* is implemented in mingw32 gcc 4.5.2 at least 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * so this define does not turn those on or off. If you get an 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * error from __sync_lock* then consider upgrading your gcc. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_GCC_ATOMIC_BUILTINS 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the timespec struct */ 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_STRUCT_TIMESPEC 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have the GetProcessAffinityMask() */ 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_PROCESS_AFFINITY_MASK 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if your version of Windows TLSGetValue() clears WSALastError 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and calling SetLastError() isn't enough restore it. You'll also need to 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * link against wsock32.lib (or libwsock32.a for MinGW). 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef RETAIN_WSALASTERROR 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ---------------------------------------------------------------------- 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The library can be built with some alternative behaviour to better 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# facilitate development of applications on Win32 that will be ported 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# to other POSIX systems. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Nothing described here will make the library non-compliant and strictly 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# compliant applications will not be affected in any way, but 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# applications that make assumptions that POSIX does not guarantee are 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not strictly compliant and may fail or misbehave with some settings. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# PTW32_THREAD_ID_REUSE_INCREMENT 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Purpose: 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# POSIX says that applications should assume that thread IDs can be 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# recycled. However, Solaris (and some other systems) use a [very large] 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sequence number as the thread ID, which provides virtual uniqueness. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This provides a very high but finite level of safety for applications 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that are not meticulous in tracking thread lifecycles e.g. applications 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that call functions which target detached threads without some form of 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# thread exit synchronisation. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Usage: 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to any value in the range: 0 <= value < 2^wordsize. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to 0 to emulate reusable thread ID behaviour like Linux or *BSD. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to 1 for unique thread IDs like Solaris (this is the default). 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to some factor of 2^wordsize to emulate smaller word size types 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# (i.e. will wrap sooner). This might be useful to emulate some embedded 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# systems. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PTW32_THREAD_ID_REUSE_INCREMENT 0 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ---------------------------------------------------------------------- 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef PTW32_THREAD_ID_REUSE_INCREMENT 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/********************************************************************* 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Target specific groups 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If you find that these are incorrect or incomplete please report it 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the pthreads-win32 maintainer. Thanks. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *********************************************************************/ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(WINCE) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_DUPLICATEHANDLE 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_CREATETHREAD 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_ERRNO 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_CALLOC 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_FTIME 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define NEED_SEM */ 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_UNICODE_CONSTS 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_PROCESS_AFFINITY_MASK 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This may not be needed */ 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define RETAIN_WSALASTERROR 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_UWIN) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STRUCT_TIMESPEC 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__GNUC__) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_C_INLINE 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__MINGW64__) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STRUCT_TIMESPEC 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(__MINGW32__) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__BORLANDC__) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__WATCOMC__) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__DMC__) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_SIGNAL_H 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_C_INLINE 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 154