1 /**
2  * Summary: interfaces for thread handling
3  * Description: set of generic threading related routines
4  *              should work with pthreads, Windows native or TLS threads
5  *
6  * Copy: See Copyright for the status of this software.
7  *
8  * Author: Daniel Veillard
9  */
10 
11 #ifndef __XML_THREADS_H__
12 #define __XML_THREADS_H__
13 
14 #include <libxml/xmlversion.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 /*
21  * xmlMutex are a simple mutual exception locks.
22  */
23 typedef struct _xmlMutex xmlMutex;
24 typedef xmlMutex *xmlMutexPtr;
25 
26 /*
27  * xmlRMutex are reentrant mutual exception locks.
28  */
29 typedef struct _xmlRMutex xmlRMutex;
30 typedef xmlRMutex *xmlRMutexPtr;
31 
32 #ifdef __cplusplus
33 }
34 #endif
35 #include <libxml/globals.h>
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 XMLPUBFUN xmlMutexPtr XMLCALL
40 			xmlNewMutex	(void);
41 XMLPUBFUN void XMLCALL
42 			xmlMutexLock	(xmlMutexPtr tok);
43 XMLPUBFUN void XMLCALL
44 			xmlMutexUnlock	(xmlMutexPtr tok);
45 XMLPUBFUN void XMLCALL
46 			xmlFreeMutex	(xmlMutexPtr tok);
47 
48 XMLPUBFUN xmlRMutexPtr XMLCALL
49 			xmlNewRMutex	(void);
50 XMLPUBFUN void XMLCALL
51 			xmlRMutexLock	(xmlRMutexPtr tok);
52 XMLPUBFUN void XMLCALL
53 			xmlRMutexUnlock	(xmlRMutexPtr tok);
54 XMLPUBFUN void XMLCALL
55 			xmlFreeRMutex	(xmlRMutexPtr tok);
56 
57 /*
58  * Library wide APIs.
59  */
60 XML_DEPRECATED
61 XMLPUBFUN void XMLCALL
62 			xmlInitThreads	(void);
63 XMLPUBFUN void XMLCALL
64 			xmlLockLibrary	(void);
65 XMLPUBFUN void XMLCALL
66 			xmlUnlockLibrary(void);
67 XMLPUBFUN int XMLCALL
68 			xmlGetThreadId	(void);
69 XMLPUBFUN int XMLCALL
70 			xmlIsMainThread	(void);
71 XML_DEPRECATED
72 XMLPUBFUN void XMLCALL
73 			xmlCleanupThreads(void);
74 XMLPUBFUN xmlGlobalStatePtr XMLCALL
75 			xmlGetGlobalState(void);
76 
77 #ifdef HAVE_PTHREAD_H
78 #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
79 #if defined(LIBXML_STATIC_FOR_DLL)
80 int XMLCALL
81 xmlDllMain(void *hinstDLL, unsigned long fdwReason,
82            void *lpvReserved);
83 #endif
84 #endif
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 
91 #endif /* __XML_THREADS_H__ */
92