1 #ifndef XML_THREADS_H_PRIVATE__ 2 #define XML_THREADS_H_PRIVATE__ 3 4 #include <libxml/threads.h> 5 6 #ifdef LIBXML_THREAD_ENABLED 7 #ifdef HAVE_PTHREAD_H 8 #include <pthread.h> 9 #define HAVE_POSIX_THREADS 10 #elif defined(_WIN32) 11 #define WIN32_LEAN_AND_MEAN 12 #include <windows.h> 13 #ifndef HAVE_COMPILER_TLS 14 #include <process.h> 15 #endif 16 #define HAVE_WIN32_THREADS 17 #endif 18 #endif 19 20 /* 21 * xmlMutex are a simple mutual exception locks 22 */ 23 struct _xmlMutex { 24 #ifdef HAVE_POSIX_THREADS 25 pthread_mutex_t lock; 26 #elif defined HAVE_WIN32_THREADS 27 CRITICAL_SECTION cs; 28 #else 29 int empty; 30 #endif 31 }; 32 33 XML_HIDDEN void 34 __xmlGlobalInitMutexLock(void); 35 XML_HIDDEN void 36 __xmlGlobalInitMutexUnlock(void); 37 XML_HIDDEN void 38 __xmlGlobalInitMutexDestroy(void); 39 40 XML_HIDDEN void 41 xmlInitThreadsInternal(void); 42 XML_HIDDEN void 43 xmlCleanupThreadsInternal(void); 44 45 XML_HIDDEN void 46 xmlInitMutex(xmlMutexPtr mutex); 47 XML_HIDDEN void 48 xmlCleanupMutex(xmlMutexPtr mutex); 49 50 #endif /* XML_THREADS_H_PRIVATE__ */ 51