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__ */ 85