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 | XMLPUBFUN void XMLCALL |
61 | xmlInitThreads (void); |
62 | XMLPUBFUN void XMLCALL |
63 | xmlLockLibrary (void); |
64 | XMLPUBFUN void XMLCALL |
65 | xmlUnlockLibrary(void); |
66 | XMLPUBFUN int XMLCALL |
67 | xmlGetThreadId (void); |
68 | XMLPUBFUN int XMLCALL |
69 | xmlIsMainThread (void); |
70 | XMLPUBFUN void XMLCALL |
71 | xmlCleanupThreads(void); |
72 | XMLPUBFUN xmlGlobalStatePtr XMLCALL |
73 | xmlGetGlobalState(void); |
74 | |
75 | #ifdef HAVE_PTHREAD_H |
76 | #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL)) |
77 | #if defined(LIBXML_STATIC_FOR_DLL) |
78 | int XMLCALL |
79 | xmlDllMain(void *hinstDLL, unsigned long fdwReason, |
80 | void *lpvReserved); |
81 | #endif |
82 | #endif |
83 | |
84 | #ifdef __cplusplus |
85 | } |
86 | #endif |
87 | |
88 | |
89 | #endif /* __XML_THREADS_H__ */ |
90 |