• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 /**
17  * @addtogroup Ffrt
18  * @{
19  *
20  * @brief ffrt provides APIs.
21  *
22  *
23  * @syscap SystemCapability.Resourceschedule.Ffrt.Core
24  *
25  * @since 10
26  */
27 
28 /**
29  * @file mutex.h
30  *
31  * @brief Declares the mutex interfaces in C.
32  *
33  * @syscap SystemCapability.Resourceschedule.Ffrt.Core
34  * @since 10
35  * @version 1.0
36  */
37 #ifndef FFRT_API_C_MUTEX_H
38 #define FFRT_API_C_MUTEX_H
39 #include "type_def.h"
40 
41 /**
42  * @brief Initializes a mutex.
43  *
44  * @param mutex Indicates a pointer to the mutex.
45  * @param attr Indicates a pointer to the mutex attribute.
46  * @return Returns <b>ffrt_thrd_success</b> if the mutex is initialized;
47            returns <b>ffrt_thrd_error</b> otherwise.
48  * @since 10
49  * @version 1.0
50  */
51 FFRT_C_API int ffrt_mutex_init(ffrt_mutex_t* mutex, const ffrt_mutexattr_t* attr);
52 
53 /**
54  * @brief Locks a mutex.
55  *
56  * @param mutex Indicates a pointer to the mutex.
57  * @return Returns <b>ffrt_thrd_success</b> if the mutex is locked;
58            returns <b>ffrt_thrd_error</b> or blocks the calling thread otherwise.
59  * @since 10
60  * @version 1.0
61  */
62 FFRT_C_API int ffrt_mutex_lock(ffrt_mutex_t* mutex);
63 
64 /**
65  * @brief Unlocks a mutex.
66  *
67  * @param mutex Indicates a pointer to the mutex.
68  * @return Returns <b>ffrt_thrd_success</b> if the mutex is unlocked;
69            returns <b>ffrt_thrd_error</b> otherwise.
70  * @since 10
71  * @version 1.0
72  */
73 FFRT_C_API int ffrt_mutex_unlock(ffrt_mutex_t* mutex);
74 
75 /**
76  * @brief Attempts to lock a mutex.
77  *
78  * @param mutex Indicates a pointer to the mutex.
79  * @return Returns <b>ffrt_thrd_success</b> if the mutex is locked;
80            returns <b>ffrt_thrd_error</b> or <b>ffrt_thrd_busy</b> otherwise.
81  * @since 10
82  * @version 1.0
83  */
84 FFRT_C_API int ffrt_mutex_trylock(ffrt_mutex_t* mutex);
85 
86 /**
87  * @brief Destroys a mutex.
88  *
89  * @param mutex Indicates a pointer to the mutex.
90  * @return Returns <b>ffrt_thrd_success</b> if the mutex is destroyed;
91            returns <b>ffrt_thrd_error</b> otherwise.
92  * @since 10
93  * @version 1.0
94  */
95 FFRT_C_API int ffrt_mutex_destroy(ffrt_mutex_t* mutex);
96 #endif
97