WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
los_mux_pri.h
浏览该文件的文档.
1/* ----------------------------------------------------------------------------
2 * Copyright (c) Huawei Technologies Co., Ltd. 2013-2019. All rights reserved.
3 * Description: Mutex Private HeadFile
4 * Author: Huawei LiteOS Team
5 * Create: 2013-01-01
6 * Redistribution and use in source and binary forms, with or without modification,
7 * are permitted provided that the following conditions are met:
8 * 1. Redistributions of source code must retain the above copyright notice, this list of
9 * conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
14 * to endorse or promote products derived from this software without specific prior written
15 * permission.
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * --------------------------------------------------------------------------- */
28
29#ifndef _LOS_MUX_PRI_H
30#define _LOS_MUX_PRI_H
31
32#include "los_mux.h"
33#include "los_task_pri.h"
34
35#ifdef __cplusplus
36extern "C" {
37#endif /* __cplusplus */
38
39#define MUX_SCHEDULE 0x01
40#define MUX_NO_SCHEDULE 0x02
41
42typedef struct {
43 LOS_DL_LIST muxList; /* Mutex linked list */
44 LosTaskCB *owner; /* The current thread that is locking a mutex */
45 UINT16 muxCount; /* Times of locking a mutex */
46 UINT8 muxStat; /* State LOS_UNUSED, LOS_USED */
47 UINT32 muxId; /* Handle ID */
48} LosMuxCB;
49
50/* Mutex global array address, which can be obtained by using a handle ID. */
51extern LosMuxCB *g_osAllMux;
52
53#ifdef LOSCFG_BASE_CORE_SYS_RES_CHECK
54/* COUNT | INDEX split bit */
55#define MUX_SPLIT_BIT 16
56/* Set the mutex id */
57#define SET_MUX_ID(count, muxId) (((count) << MUX_SPLIT_BIT) | (muxId))
58#define GET_MUX_INDEX(muxId) ((muxId) & ((1U << MUX_SPLIT_BIT) - 1))
59#define GET_MUX_COUNT(muxId) ((muxId) >> MUX_SPLIT_BIT)
60#else
61#define GET_MUX_INDEX(muxId) (muxId)
62#endif
63
64/* Obtain the pointer to a mutex object of the mutex that has a specified handle. */
65#define GET_MUX(muxId) (((LosMuxCB *)g_osAllMux) + GET_MUX_INDEX(muxId))
66
67/* Obtain the pointer to the owner of the muxBaseCB. */
68#define GET_MUX_OWNER(muxBaseCB) ((LosTaskCB *)((muxBaseCB)->owner))
69
71extern UINT32 OsMuxPendOp(LosTaskCB *runTask, MuxBaseCB *muxPended, UINT32 timeout);
72extern UINT32 OsMuxPostOp(LosTaskCB *runTask, MuxBaseCB *muxPosted);
73#ifdef __cplusplus
74}
75#endif /* __cplusplus */
76
77#endif /* _LOS_MUX_PRI_H */
UINT32 OsMuxPostOp(LosTaskCB *runTask, MuxBaseCB *muxPosted)
UINT32 OsMuxInit(VOID)
UINT32 OsMuxPendOp(LosTaskCB *runTask, MuxBaseCB *muxPended, UINT32 timeout)
LosMuxCB * g_osAllMux
unsigned short UINT16
Definition los_typedef.h:51
#define VOID
Definition los_typedef.h:88
unsigned char UINT8
Definition los_typedef.h:50
unsigned int UINT32
Definition los_typedef.h:52
Definition los_list.h:47
Definition los_mux_pri.h:42
UINT16 muxCount
Definition los_mux_pri.h:45
LosTaskCB * owner
Definition los_mux_pri.h:44
UINT8 muxStat
Definition los_mux_pri.h:46
UINT32 muxId
Definition los_mux_pri.h:47
LOS_DL_LIST muxList
Definition los_mux_pri.h:43
Definition los_mux.h:51
Definition los_task_base.h:131