blob: d20b8ffa029fb173429c82e24dcd06b2b428436e [file] [log] [blame]
Daniel Veillardb8478642001-10-12 17:29:10 +00001/**
2 * threads.c: set of generic threading related routines
3 *
4 * See Copyright for the status of this software.
5 *
6 * daniel@veillard.com
7 */
8
9#ifndef __XML_THREADS_H__
10#define __XML_THREADS_H__
11
12#include <libxml/globals.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/*
19 * xmlMutex are a simple mutual exception locks
20 */
21typedef struct _xmlMutex xmlMutex;
22typedef xmlMutex *xmlMutexPtr;
23
24xmlMutexPtr xmlNewMutex (void);
25void xmlMutexLock (xmlMutexPtr tok);
26void xmlMutexUnlock (xmlMutexPtr tok);
27void xmlFreeMutex (xmlMutexPtr tok);
28
29/*
30 * xmlRMutex are reentrant mutual exception locks
31 */
32typedef struct _xmlRMutex xmlRMutex;
33typedef xmlRMutex *xmlRMutexPtr;
34
35xmlRMutexPtr xmlNewRMutex (void);
36void xmlRMutexLock (xmlRMutexPtr tok);
37void xmlRMutexUnlock (xmlRMutexPtr tok);
38void xmlFreeRMutex (xmlRMutexPtr tok);
39
40/*
41 * Library wide APIs
42 */
43void xmlInitThreads (void);
44void xmlLockLibrary (void);
45void xmlUnlockLibrary(void);
46void xmlCleanupThreads(void);
47xmlGlobalStatePtr xmlGetGlobalState(void);
48
49#ifdef __cplusplus
50}
51#endif
52
53
54#endif /* __XML_THREADS_H__ */