blob: 4f7d10f71c91236dddb97c8053e456f661c4abc2 [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
Igor Zlatkovic76874e42003-08-25 09:05:12 +000039XMLPUBFUN xmlMutexPtr XMLCALL
40 xmlNewMutex (void);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000041XMLPUBFUN void XMLCALL
42 xmlMutexLock (xmlMutexPtr tok);
43XMLPUBFUN void XMLCALL
44 xmlMutexUnlock (xmlMutexPtr tok);
45XMLPUBFUN void XMLCALL
46 xmlFreeMutex (xmlMutexPtr tok);
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000047
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000048XMLPUBFUN 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);
Daniel Veillardb8478642001-10-12 17:29:10 +000056
57/*
Daniel Veillard61f26172002-03-12 18:46:39 +000058 * Library wide APIs.
Daniel Veillardb8478642001-10-12 17:29:10 +000059 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000060XMLPUBFUN 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);
Daniel Veillardb8478642001-10-12 17:29:10 +000074
75#ifdef __cplusplus
76}
77#endif
78
79
80#endif /* __XML_THREADS_H__ */