1/**
2 * @file
3 *
4 * @brief interfaces for thread handling
5 *
6 * set of generic threading related routines
7 * should work with pthreads, Windows native or TLS threads
8 *
9 * @copyright See Copyright for the status of this software.
10 *
11 * @author Daniel Veillard
12 */
13
14#ifndef __XML_THREADS_H__
15#define __XML_THREADS_H__
16
17#include <libxml/xmlversion.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23/** Mutual exclusion object */
24typedef struct _xmlMutex xmlMutex;
25typedef xmlMutex *xmlMutexPtr;
26
27/** Reentrant mutual exclusion object */
28typedef struct _xmlRMutex xmlRMutex;
29typedef xmlRMutex *xmlRMutexPtr;
30
31XMLPUBFUN int
32 xmlCheckThreadLocalStorage(void);
33
34XMLPUBFUN xmlMutex *
35 xmlNewMutex (void);
36XMLPUBFUN void
37 xmlMutexLock (xmlMutex *tok);
38XMLPUBFUN void
39 xmlMutexUnlock (xmlMutex *tok);
40XMLPUBFUN void
41 xmlFreeMutex (xmlMutex *tok);
42
43XMLPUBFUN xmlRMutex *
44 xmlNewRMutex (void);
45XMLPUBFUN void
46 xmlRMutexLock (xmlRMutex *tok);
47XMLPUBFUN void
48 xmlRMutexUnlock (xmlRMutex *tok);
49XMLPUBFUN void
50 xmlFreeRMutex (xmlRMutex *tok);
51
52/*
53 * Library wide APIs.
54 */
55XML_DEPRECATED
56XMLPUBFUN void
57 xmlInitThreads (void);
58XMLPUBFUN void
59 xmlLockLibrary (void);
60XMLPUBFUN void
61 xmlUnlockLibrary(void);
62XML_DEPRECATED
63XMLPUBFUN void
64 xmlCleanupThreads(void);
65
66/** @cond IGNORE */
67#if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \
68 defined(LIBXML_STATIC_FOR_DLL)
69int
70xmlDllMain(void *hinstDLL, unsigned long fdwReason,
71 void *lpvReserved);
72#endif
73/** @endcond */
74
75#ifdef __cplusplus
76}
77#endif
78
79
80#endif /* __XML_THREADS_H__ */
81