blob: fb6b70488561923a6bfa83b9b169877e31f16919 [file] [log] [blame]
Daniel Veillardb8478642001-10-12 17:29:10 +00001/**
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: interfaces for thread handling
3 * Description: set of generic threading related routines
4 * should work with pthreads, Windows native or TLS threads
Daniel Veillardb8478642001-10-12 17:29:10 +00005 *
Daniel Veillardbe586972003-11-18 20:56:51 +00006 * Copy: See Copyright for the status of this software.
Daniel Veillardb8478642001-10-12 17:29:10 +00007 *
Daniel Veillardbe586972003-11-18 20:56:51 +00008 * Author: Daniel Veillard
Daniel Veillardb8478642001-10-12 17:29:10 +00009 */
10
11#ifndef __XML_THREADS_H__
12#define __XML_THREADS_H__
13
Igor Zlatkovic76874e42003-08-25 09:05:12 +000014#include <libxml/xmlversion.h>
15
Daniel Veillardb8478642001-10-12 17:29:10 +000016#ifdef __cplusplus
17extern "C" {
18#endif
19
20/*
Daniel Veillard61f26172002-03-12 18:46:39 +000021 * xmlMutex are a simple mutual exception locks.
Daniel Veillardb8478642001-10-12 17:29:10 +000022 */
23typedef struct _xmlMutex xmlMutex;
24typedef xmlMutex *xmlMutexPtr;
25
Daniel Veillardb8478642001-10-12 17:29:10 +000026/*
Daniel Veillard61f26172002-03-12 18:46:39 +000027 * xmlRMutex are reentrant mutual exception locks.
Daniel Veillardb8478642001-10-12 17:29:10 +000028 */
29typedef struct _xmlRMutex xmlRMutex;
30typedef xmlRMutex *xmlRMutexPtr;
31
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000032#ifdef __cplusplus
33}
34#endif
35#include <libxml/globals.h>
36#ifdef __cplusplus
37extern "C" {
38#endif
39
Igor Zlatkovic76874e42003-08-25 09:05:12 +000040XMLPUBFUN xmlMutexPtr XMLCALL
41 xmlNewMutex (void);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000042XMLPUBFUN void XMLCALL
43 xmlMutexLock (xmlMutexPtr tok);
44XMLPUBFUN void XMLCALL
45 xmlMutexUnlock (xmlMutexPtr tok);
46XMLPUBFUN void XMLCALL
47 xmlFreeMutex (xmlMutexPtr tok);
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000048
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000049XMLPUBFUN xmlRMutexPtr XMLCALL
50 xmlNewRMutex (void);
51XMLPUBFUN void XMLCALL
52 xmlRMutexLock (xmlRMutexPtr tok);
53XMLPUBFUN void XMLCALL
54 xmlRMutexUnlock (xmlRMutexPtr tok);
55XMLPUBFUN void XMLCALL
56 xmlFreeRMutex (xmlRMutexPtr tok);
Daniel Veillardb8478642001-10-12 17:29:10 +000057
58/*
Daniel Veillard61f26172002-03-12 18:46:39 +000059 * Library wide APIs.
Daniel Veillardb8478642001-10-12 17:29:10 +000060 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000061XMLPUBFUN void XMLCALL
62 xmlInitThreads (void);
63XMLPUBFUN void XMLCALL
64 xmlLockLibrary (void);
65XMLPUBFUN void XMLCALL
66 xmlUnlockLibrary(void);
67XMLPUBFUN int XMLCALL
68 xmlGetThreadId (void);
69XMLPUBFUN int XMLCALL
70 xmlIsMainThread (void);
71XMLPUBFUN void XMLCALL
72 xmlCleanupThreads(void);
73XMLPUBFUN xmlGlobalStatePtr XMLCALL
74 xmlGetGlobalState(void);
Daniel Veillardb8478642001-10-12 17:29:10 +000075
76#ifdef __cplusplus
77}
78#endif
79
80
81#endif /* __XML_THREADS_H__ */