Home | History | Annotate | Download | only in libxml
      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 #ifdef HAVE_PTHREAD_H
     76 #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
     77 #if defined(LIBXML_STATIC_FOR_DLL)
     78 int XMLCALL
     79 xmlDllMain(void *hinstDLL, unsigned long fdwReason,
     80            void *lpvReserved);
     81 #endif
     82 #endif
     83 
     84 #ifdef __cplusplus
     85 }
     86 #endif
     87 
     88 
     89 #endif /* __XML_THREADS_H__ */
     90