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 XMLPUBFUN int 33 xmlCheckThreadLocalStorage(void); 34 35 XMLPUBFUN xmlMutexPtr 36 xmlNewMutex (void); 37 XMLPUBFUN void 38 xmlMutexLock (xmlMutexPtr tok); 39 XMLPUBFUN void 40 xmlMutexUnlock (xmlMutexPtr tok); 41 XMLPUBFUN void 42 xmlFreeMutex (xmlMutexPtr tok); 43 44 XMLPUBFUN xmlRMutexPtr 45 xmlNewRMutex (void); 46 XMLPUBFUN void 47 xmlRMutexLock (xmlRMutexPtr tok); 48 XMLPUBFUN void 49 xmlRMutexUnlock (xmlRMutexPtr tok); 50 XMLPUBFUN void 51 xmlFreeRMutex (xmlRMutexPtr tok); 52 53 /* 54 * Library wide APIs. 55 */ 56 XML_DEPRECATED 57 XMLPUBFUN void 58 xmlInitThreads (void); 59 XMLPUBFUN void 60 xmlLockLibrary (void); 61 XMLPUBFUN void 62 xmlUnlockLibrary(void); 63 XML_DEPRECATED 64 XMLPUBFUN int 65 xmlGetThreadId (void); 66 XML_DEPRECATED 67 XMLPUBFUN int 68 xmlIsMainThread (void); 69 XML_DEPRECATED 70 XMLPUBFUN void 71 xmlCleanupThreads(void); 72 73 /** DOC_DISABLE */ 74 #if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \ 75 defined(LIBXML_STATIC_FOR_DLL) 76 int 77 xmlDllMain(void *hinstDLL, unsigned long fdwReason, 78 void *lpvReserved); 79 #endif 80 /** DOC_ENABLE */ 81 82 #ifdef __cplusplus 83 } 84 #endif 85 86 87 #endif /* __XML_THREADS_H__ */ 88