#ifndef XML_THREADS_H_PRIVATE__ #define XML_THREADS_H_PRIVATE__ #include #ifdef LIBXML_THREAD_ENABLED #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #ifdef _WIN32_WINNT #undef _WIN32_WINNT #endif #define _WIN32_WINNT 0x0600 #include #define HAVE_WIN32_THREADS #else #include #define HAVE_POSIX_THREADS #endif #endif /* * xmlMutex are a simple mutual exception locks */ struct _xmlMutex { #ifdef HAVE_POSIX_THREADS pthread_mutex_t lock; #elif defined HAVE_WIN32_THREADS CRITICAL_SECTION cs; #else int empty; #endif }; /* * xmlRMutex are reentrant mutual exception locks */ struct _xmlRMutex { #ifdef HAVE_POSIX_THREADS pthread_mutex_t lock; unsigned int held; unsigned int waiters; pthread_t tid; pthread_cond_t cv; #elif defined HAVE_WIN32_THREADS CRITICAL_SECTION cs; #else int empty; #endif }; XML_HIDDEN void xmlInitMutex(xmlMutexPtr mutex); XML_HIDDEN void xmlCleanupMutex(xmlMutexPtr mutex); XML_HIDDEN void xmlInitRMutex(xmlRMutexPtr mutex); XML_HIDDEN void xmlCleanupRMutex(xmlRMutexPtr mutex); #endif /* XML_THREADS_H_PRIVATE__ */