1*7c568831SAndroid Build Coastguard Worker #ifndef XML_THREADS_H_PRIVATE__ 2*7c568831SAndroid Build Coastguard Worker #define XML_THREADS_H_PRIVATE__ 3*7c568831SAndroid Build Coastguard Worker 4*7c568831SAndroid Build Coastguard Worker #include <libxml/threads.h> 5*7c568831SAndroid Build Coastguard Worker 6*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_THREAD_ENABLED 7*7c568831SAndroid Build Coastguard Worker #ifdef _WIN32 8*7c568831SAndroid Build Coastguard Worker #define WIN32_LEAN_AND_MEAN 9*7c568831SAndroid Build Coastguard Worker #ifdef _WIN32_WINNT 10*7c568831SAndroid Build Coastguard Worker #undef _WIN32_WINNT 11*7c568831SAndroid Build Coastguard Worker #endif 12*7c568831SAndroid Build Coastguard Worker #define _WIN32_WINNT 0x0600 13*7c568831SAndroid Build Coastguard Worker #include <windows.h> 14*7c568831SAndroid Build Coastguard Worker #define HAVE_WIN32_THREADS 15*7c568831SAndroid Build Coastguard Worker #else 16*7c568831SAndroid Build Coastguard Worker #include <pthread.h> 17*7c568831SAndroid Build Coastguard Worker #define HAVE_POSIX_THREADS 18*7c568831SAndroid Build Coastguard Worker #endif 19*7c568831SAndroid Build Coastguard Worker #endif 20*7c568831SAndroid Build Coastguard Worker 21*7c568831SAndroid Build Coastguard Worker /* 22*7c568831SAndroid Build Coastguard Worker * xmlMutex are a simple mutual exception locks 23*7c568831SAndroid Build Coastguard Worker */ 24*7c568831SAndroid Build Coastguard Worker struct _xmlMutex { 25*7c568831SAndroid Build Coastguard Worker #ifdef HAVE_POSIX_THREADS 26*7c568831SAndroid Build Coastguard Worker pthread_mutex_t lock; 27*7c568831SAndroid Build Coastguard Worker #elif defined HAVE_WIN32_THREADS 28*7c568831SAndroid Build Coastguard Worker CRITICAL_SECTION cs; 29*7c568831SAndroid Build Coastguard Worker #else 30*7c568831SAndroid Build Coastguard Worker int empty; 31*7c568831SAndroid Build Coastguard Worker #endif 32*7c568831SAndroid Build Coastguard Worker }; 33*7c568831SAndroid Build Coastguard Worker 34*7c568831SAndroid Build Coastguard Worker /* 35*7c568831SAndroid Build Coastguard Worker * xmlRMutex are reentrant mutual exception locks 36*7c568831SAndroid Build Coastguard Worker */ 37*7c568831SAndroid Build Coastguard Worker struct _xmlRMutex { 38*7c568831SAndroid Build Coastguard Worker #ifdef HAVE_POSIX_THREADS 39*7c568831SAndroid Build Coastguard Worker pthread_mutex_t lock; 40*7c568831SAndroid Build Coastguard Worker unsigned int held; 41*7c568831SAndroid Build Coastguard Worker unsigned int waiters; 42*7c568831SAndroid Build Coastguard Worker pthread_t tid; 43*7c568831SAndroid Build Coastguard Worker pthread_cond_t cv; 44*7c568831SAndroid Build Coastguard Worker #elif defined HAVE_WIN32_THREADS 45*7c568831SAndroid Build Coastguard Worker CRITICAL_SECTION cs; 46*7c568831SAndroid Build Coastguard Worker #else 47*7c568831SAndroid Build Coastguard Worker int empty; 48*7c568831SAndroid Build Coastguard Worker #endif 49*7c568831SAndroid Build Coastguard Worker }; 50*7c568831SAndroid Build Coastguard Worker 51*7c568831SAndroid Build Coastguard Worker XML_HIDDEN void 52*7c568831SAndroid Build Coastguard Worker xmlInitMutex(xmlMutexPtr mutex); 53*7c568831SAndroid Build Coastguard Worker XML_HIDDEN void 54*7c568831SAndroid Build Coastguard Worker xmlCleanupMutex(xmlMutexPtr mutex); 55*7c568831SAndroid Build Coastguard Worker 56*7c568831SAndroid Build Coastguard Worker XML_HIDDEN void 57*7c568831SAndroid Build Coastguard Worker xmlInitRMutex(xmlRMutexPtr mutex); 58*7c568831SAndroid Build Coastguard Worker XML_HIDDEN void 59*7c568831SAndroid Build Coastguard Worker xmlCleanupRMutex(xmlRMutexPtr mutex); 60*7c568831SAndroid Build Coastguard Worker 61*7c568831SAndroid Build Coastguard Worker #endif /* XML_THREADS_H_PRIVATE__ */ 62