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 17extern "C" { 18#endif 19 20/* 21 * xmlMutex are a simple mutual exception locks. 22 */ 23typedef struct _xmlMutex xmlMutex; 24typedef xmlMutex *xmlMutexPtr; 25 26/* 27 * xmlRMutex are reentrant mutual exception locks. 28 */ 29typedef struct _xmlRMutex xmlRMutex; 30typedef xmlRMutex *xmlRMutexPtr; 31 32#ifdef __cplusplus 33} 34#endif 35#include <libxml/globals.h> 36#ifdef __cplusplus 37extern "C" { 38#endif 39XMLPUBFUN xmlMutexPtr XMLCALL 40 xmlNewMutex (void); 41XMLPUBFUN void XMLCALL 42 xmlMutexLock (xmlMutexPtr tok); 43XMLPUBFUN void XMLCALL 44 xmlMutexUnlock (xmlMutexPtr tok); 45XMLPUBFUN void XMLCALL 46 xmlFreeMutex (xmlMutexPtr tok); 47 48XMLPUBFUN xmlRMutexPtr XMLCALL 49 xmlNewRMutex (void); 50XMLPUBFUN void XMLCALL 51 xmlRMutexLock (xmlRMutexPtr tok); 52XMLPUBFUN void XMLCALL 53 xmlRMutexUnlock (xmlRMutexPtr tok); 54XMLPUBFUN void XMLCALL 55 xmlFreeRMutex (xmlRMutexPtr tok); 56 57/* 58 * Library wide APIs. 59 */ 60XMLPUBFUN void XMLCALL 61 xmlInitThreads (void); 62XMLPUBFUN void XMLCALL 63 xmlLockLibrary (void); 64XMLPUBFUN void XMLCALL 65 xmlUnlockLibrary(void); 66XMLPUBFUN int XMLCALL 67 xmlGetThreadId (void); 68XMLPUBFUN int XMLCALL 69 xmlIsMainThread (void); 70XMLPUBFUN void XMLCALL 71 xmlCleanupThreads(void); 72XMLPUBFUN xmlGlobalStatePtr XMLCALL 73 xmlGetGlobalState(void); 74 75#if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && defined(LIBXML_STATIC_FOR_DLL) 76int 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