• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file hi_mux.h
3  *
4  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /**
19  * @defgroup iot_mux Mutex
20  * @ingroup osa
21  */
22 
23 #ifndef __HI_MUX_H__
24 #define __HI_MUX_H__
25 #include <hi_types_base.h>
26 
27 /**
28 * @ingroup  iot_mux
29 * @brief  Creates a mutex.CNcomment:创建互斥锁。CNend
30 *
31 * @par 描述:
32 *           Creates a mutex.CNcomment:创建互斥锁。CNend
33 *
34 * @attention None
35 * @param  mux_id  [OUT] type #hi_u32*,Mutex handle.CNcomment:互斥锁句柄。CNend
36 *
37 * @retval #0      Success
38 * @retval #Other  Failure. For details, see hi_errno.h.
39 * @par 依赖:
40 *            @li hi_mux.h:Describes mutex APIs.CNcomment:文件用于描述互斥锁相关接口。CNend
41 * @see  hi_mux_delete。
42 */
43 hi_u32 hi_mux_create (hi_u32 *mux_id);
44 
45 /**
46 * @ingroup  iot_mux
47 * @brief  Deletes a mutex.CNcomment:删除互斥锁。CNend
48 *
49 * @par 描述:
50 *           Deletes a mutex.CNcomment:删除互斥锁。CNend
51 *
52 * @attention None
53 *
54 * @param  mux_id  [IN] type #hi_u32,Mutex handle.CNcomment:互斥锁句柄。CNend
55 *
56 * @retval #0      Success
57 * @retval #Other  Failure. For details, see hi_errno.h.
58 * @par 依赖:
59 *            @li hi_mux.h:Describes mutex APIs.CNcomment:文件用于描述互斥锁相关接口。CNend
60 * @see  hi_mux_create。
61 */
62 hi_u32 hi_mux_delete(hi_u32 mux_id);
63 
64 /**
65 * @ingroup  iot_mux
66 * @brief  Waits for a mutex.CNcomment:等待互斥锁。CNend
67 *
68 * @par 描述:
69 *           Waits for a mutex.CNcomment:等待互斥锁。CNend
70 *
71 * @attention Mutexes support priority inversion.CNcomment:互斥锁支持优先级翻转。CNend
72 * @param  mux_id     [IN] type #hi_u32,Mutex handle.CNcomment:互斥锁句柄。CNend
73 * @param  timeout_ms [IN] type #hi_u32,Timeout period (unit: ms). HI_SYS_WAIT_FOREVER indicates permanent waiting.
74 CNcomment:超时时间(单位:ms)。HI_SYS_WAIT_FOREVER为永久等待。CNend
75 *
76 * @retval #0      Success
77 * @retval #Other  Failure. For details, see hi_errno.h.
78 * @par 依赖:
79 *            @li hi_mux.h:Describes mutex APIs.CNcomment:文件用于描述互斥锁相关接口。CNend
80 * @see  hi_mux_post。
81 */
82 hi_u32 hi_mux_pend(hi_u32 mux_id, hi_u32 timeout_ms);
83 
84 /**
85 * @ingroup  iot_mux
86 * @brief  Releases a mutex.CNcomment:释放互斥锁。CNend
87 *
88 * @par 描述:
89 *           Releases a mutex.CNcomment:释放互斥锁。CNend
90 *
91 * @attention A mutex can be released only in the task that has obtained the mutex.
92 CNcomment:互斥锁只能在获取到互斥锁的任务中释放。CNend
93 *
94 * @param  mux_id  [IN] type #hi_u32,Mutex handle.CNcomment:互斥锁句柄。CNend
95 *
96 * @retval #0      Success
97 * @retval #Other  Failure. For details, see hi_errno.h.
98 * @par 依赖:
99 *            @li hi_mux.h:Describes mutex APIs.CNcomment:文件用于描述互斥锁相关接口。CNend
100 * @see  hi_mux_pend。
101 */
102 hi_u32 hi_mux_post(hi_u32 mux_id);
103 
104 #endif
105