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