Initial revision
[TestXSLT.git] / libxml2 / include / libxml / threads.h
1 /**
2  * threads.c: set of generic threading related routines 
3  *
4  * See Copyright for the status of this software.
5  *
6  * daniel@veillard.com
7  */
8
9 #ifndef __XML_THREADS_H__
10 #define __XML_THREADS_H__
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /*
17  * xmlMutex are a simple mutual exception locks.
18  */
19 typedef struct _xmlMutex xmlMutex;
20 typedef xmlMutex *xmlMutexPtr;
21
22 /*
23  * xmlRMutex are reentrant mutual exception locks.
24  */
25 typedef struct _xmlRMutex xmlRMutex;
26 typedef xmlRMutex *xmlRMutexPtr;
27
28 #ifdef __cplusplus
29 }
30 #endif
31 #include <libxml/globals.h>
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 xmlMutexPtr             xmlNewMutex     (void);
37 void                    xmlMutexLock    (xmlMutexPtr tok);
38 void                    xmlMutexUnlock  (xmlMutexPtr tok);
39 void                    xmlFreeMutex    (xmlMutexPtr tok);
40
41 xmlRMutexPtr            xmlNewRMutex    (void);
42 void                    xmlRMutexLock   (xmlRMutexPtr tok);
43 void                    xmlRMutexUnlock (xmlRMutexPtr tok);
44 void                    xmlFreeRMutex   (xmlRMutexPtr tok);
45
46 /*
47  * Library wide APIs.
48  */
49 void                    xmlInitThreads  (void);
50 void                    xmlLockLibrary  (void);
51 void                    xmlUnlockLibrary(void);
52 int                     xmlGetThreadId  (void);
53 int                     xmlIsMainThread (void);
54 void                    xmlCleanupThreads(void);
55 xmlGlobalStatePtr       xmlGetGlobalState(void);
56
57 #ifdef __cplusplus
58 }
59 #endif
60
61
62 #endif /* __XML_THREADS_H__ */