• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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