1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | /* |
3 | * This file is part of the LibreOffice project. |
4 | * |
5 | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | * |
9 | * This file incorporates work covered by the following license notice: |
10 | * |
11 | * Licensed to the Apache Software Foundation (ASF) under one or more |
12 | * contributor license agreements. See the NOTICE file distributed |
13 | * with this work for additional information regarding copyright |
14 | * ownership. The ASF licenses this file to you under the Apache |
15 | * License, Version 2.0 (the "License"); you may not use this file |
16 | * except in compliance with the License. You may obtain a copy of |
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . |
18 | */ |
19 | |
20 | #ifndef INCLUDED_OSL_MUTEX_H |
21 | #define INCLUDED_OSL_MUTEX_H |
22 | |
23 | #include <sal/config.h> |
24 | |
25 | #include <sal/saldllapi.h> |
26 | #include <sal/types.h> |
27 | |
28 | #ifdef __cplusplus |
29 | extern "C" { |
30 | #endif |
31 | |
32 | struct _oslMutexImpl; |
33 | typedef struct _oslMutexImpl * oslMutex; |
34 | |
35 | /** Create a mutex. |
36 | @return 0 if the mutex could not be created, otherwise a handle to the mutex. |
37 | */ |
38 | SAL_DLLPUBLIC oslMutex SAL_CALL osl_createMutex(void); |
39 | |
40 | /** Release the OS-structures and free mutex data-structure. |
41 | @param Mutex the mutex-handle |
42 | */ |
43 | SAL_DLLPUBLIC void SAL_CALL osl_destroyMutex(oslMutex Mutex); |
44 | |
45 | /** Acquire the mutex, block if already acquired by another thread. |
46 | @param Mutex handle to a created mutex. |
47 | @return False if system-call fails. |
48 | */ |
49 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_acquireMutex(oslMutex Mutex); |
50 | |
51 | /** Try to acquire the mutex without blocking. |
52 | @param Mutex handle to a created mutex. |
53 | @return False if it could not be acquired. |
54 | */ |
55 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_tryToAcquireMutex(oslMutex Mutex); |
56 | |
57 | /** Release the mutex. |
58 | @param Mutex handle to a created mutex. |
59 | @return False if system-call fails. |
60 | */ |
61 | SAL_DLLPUBLIC sal_Bool SAL_CALL osl_releaseMutex(oslMutex Mutex); |
62 | |
63 | /** Returns a unique and global mutex. |
64 | @return the global mutex. |
65 | */ |
66 | SAL_DLLPUBLIC oslMutex * SAL_CALL osl_getGlobalMutex(void); |
67 | |
68 | #ifdef __cplusplus |
69 | } |
70 | #endif |
71 | |
72 | #endif // INCLUDED_OSL_MUTEX_H |
73 | |
74 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |
75 | |