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; <typedef:xmlMutex>
20 typedef xmlMutex *xmlMutexPtr; <typedef:xmlMutexPtr>
21
22 /*
23 * xmlRMutex are reentrant mutual exception locks.
24 */
25 typedef struct _xmlRMutex xmlRMutex; <typedef:xmlRMutex>
26 typedef xmlRMutex *xmlRMutexPtr; <typedef:xmlRMutexPtr>
27
28 #ifdef __cplusplus
29 }
30 #endif
31 #include
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__ */