xref: /aoo42x/main/sal/inc/osl/mutex.h (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _OSL_MUTEX_H_
29 #define _OSL_MUTEX_H_
30 
31 #include <sal/types.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 struct _oslMutexImpl;
38 typedef struct _oslMutexImpl * oslMutex;
39 
40 /** Create a thread-local mutex.
41 	@return 0 if the mutex could not be created, otherwise a handle to the mutex.
42 */
43 oslMutex SAL_CALL osl_createMutex(void);
44 
45 /** Release the OS-structures and free mutex data-structure.
46 	@param Mutex the mutex-handle
47 */
48 void SAL_CALL osl_destroyMutex(oslMutex Mutex);
49 
50 /** Acquire the mutex, block if already acquired by another thread.
51 	@param Mutex handle to a created mutex.
52 	@return False if system-call fails.
53 */
54 sal_Bool SAL_CALL osl_acquireMutex(oslMutex Mutex);
55 
56 /** Try to acquire the mutex without blocking.
57 	@param Mutex handle to a created mutex.
58 	@return False if it could not be acquired.
59 */
60 sal_Bool SAL_CALL osl_tryToAcquireMutex(oslMutex Mutex);
61 
62 /** Release the mutex.
63 	@param Mutex handle to a created mutex.
64 	@return False if system-call fails.
65 */
66 sal_Bool SAL_CALL osl_releaseMutex(oslMutex Mutex);
67 
68 /** Returns a unique and global mutex.
69 	@return the global mutex.
70 */
71 oslMutex * SAL_CALL osl_getGlobalMutex(void);
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif	/* _OSL_MUTEX_H_ */
78