/ libxml2 / include / libxml / threads.h
threads.h
 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  #if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && defined(LIBXML_STATIC_FOR_DLL)
76  int XMLCALL xmlDllMain(void *hinstDLL, unsigned long fdwReason, void *lpvReserved);
77  #endif
78  
79  #ifdef __cplusplus
80  }
81  #endif
82  
83  
84  #endif /* __XML_THREADS_H__ */