鸿蒙研究站
|
官方文档
|
源码分析
== 鸿蒙内核参考手册 ==
内核注释
|
论坛
|
赞助作者
更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_lockdep.h
浏览该文件的文档.
1
/*
2
* Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3
* Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without modification,
6
* are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice, this list of
9
* conditions and the following disclaimer.
10
*
11
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
* of conditions and the following disclaimer in the documentation and/or other materials
13
* provided with the distribution.
14
*
15
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
16
* to endorse or promote products derived from this software without specific prior written
17
* permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef _LOS_LOCKDEP_H
33
#define _LOS_LOCKDEP_H
34
35
#ifdef __cplusplus
36
#if __cplusplus
37
extern
"C"
{
38
#endif
/* __cplusplus */
39
#endif
/* __cplusplus */
40
41
typedef
struct
Spinlock
SPIN_LOCK_S
;
42
43
#define MAX_LOCK_DEPTH 16U
//最大的锁深度
44
45
enum
LockDepErrType
{
46
LOCKDEP_SUCCESS
= 0,
47
LOCKDEP_ERR_DOUBLE_LOCK
,
48
LOCKDEP_ERR_DEAD_LOCK
,
49
LOCKDEP_ERR_UNLOCK_WITOUT_LOCK
,
50
/* overflow, needs expand */
51
LOCKDEP_ERR_OVERFLOW
,
52
};
53
54
typedef
struct
{
55
VOID *
lockPtr
;
56
VOID *
lockAddr
;
57
UINT64
waitTime
;
58
UINT64
holdTime
;
59
}
HeldLocks
;
60
61
typedef
struct
{
62
VOID *
waitLock
;
63
INT32
lockDepth
;
64
HeldLocks
heldLocks[MAX_LOCK_DEPTH];
65
}
LockDep
;
66
67
/**
68
* @ingroup los_lockdep
69
*
70
* @par Description:
71
* This API is used to check dead lock in spinlock.
72
* @attention
73
* <ul>
74
* <li>The parameter passed in should be ensured to be a legal pointer.</li>
75
* </ul>
76
*
77
* @param lock [IN] point to a SPIN_LOCK_S.
78
*
79
* @retval None.
80
* @par Dependency:
81
* <ul><li>los_lockdep.h: the header file that contains the API declaration.</li></ul>
82
* @see
83
*/
84
extern
VOID
OsLockDepCheckIn
(
SPIN_LOCK_S
*lock);
//此API用于检查spinlock中的死锁
85
86
/**
87
* @ingroup los_lockdep
88
*
89
* @par Description:
90
* This API is used to trace when a spinlock locked.
91
* @attention
92
* <ul>
93
* <li>The parameter passed in should be ensured to be a legal pointer.</li>
94
* </ul>
95
*
96
* @param lock [IN] point to a SPIN_LOCK_S.
97
*
98
* @retval None.
99
* @par Dependency:
100
* <ul><li>los_lockdep.h: the header file that contains the API declaration.</li></ul>
101
* @see
102
*/
103
extern
VOID
OsLockDepRecord
(
SPIN_LOCK_S
*lock);
//此API用于跟踪自旋锁锁定的时间
104
105
/**
106
* @ingroup los_lockdep
107
*
108
* @par Description:
109
* This API is used to trace when a spinlock unlocked.
110
* @attention
111
* <ul>
112
* <li>The parameter passed in should be ensured to be a legal pointer.</li>
113
* </ul>
114
*
115
* @param lock [IN] point to a SPIN_LOCK_S.
116
*
117
* @retval None.
118
* @par Dependency:
119
* <ul><li>los_lockdep.h: the header file that contains the API declaration.</li></ul>
120
* @see
121
*/
122
extern
VOID
OsLockDepCheckOut
(
SPIN_LOCK_S
*lock);
//此API用于跟踪自旋锁何时解锁
123
124
/**
125
* @ingroup los_lockdep
126
*
127
* @par Description:
128
* This API is used to clear lockdep record of curret task.
129
* @attention
130
* <ul>
131
* <li>None.</li>
132
* </ul>
133
*
134
* @param None
135
* @retval None.
136
* @par Dependency:
137
* <ul><li>los_lockdep.h: the header file that contains the API declaration.</li></ul>
138
* @see
139
*/
140
extern
VOID
OsLockdepClearSpinlocks
(VOID);
//此API用于清除curret task的lockdep记录
141
142
#ifdef __cplusplus
143
#if __cplusplus
144
}
145
#endif
146
#endif
/* __cplusplus */
147
#endif
/* _LOS_LOCKDEP_H */
OsLockDepCheckIn
VOID OsLockDepCheckIn(SPIN_LOCK_S *lock)
Definition:
los_lockdep.c:189
OsLockDepCheckOut
VOID OsLockDepCheckOut(SPIN_LOCK_S *lock)
Definition:
los_lockdep.c:274
OsLockDepRecord
VOID OsLockDepRecord(SPIN_LOCK_S *lock)
Definition:
los_lockdep.c:244
LockDepErrType
LockDepErrType
Definition:
los_lockdep.h:45
LOCKDEP_ERR_DEAD_LOCK
@ LOCKDEP_ERR_DEAD_LOCK
Definition:
los_lockdep.h:48
LOCKDEP_SUCCESS
@ LOCKDEP_SUCCESS
Definition:
los_lockdep.h:46
LOCKDEP_ERR_UNLOCK_WITOUT_LOCK
@ LOCKDEP_ERR_UNLOCK_WITOUT_LOCK
Definition:
los_lockdep.h:49
LOCKDEP_ERR_DOUBLE_LOCK
@ LOCKDEP_ERR_DOUBLE_LOCK
Definition:
los_lockdep.h:47
LOCKDEP_ERR_OVERFLOW
@ LOCKDEP_ERR_OVERFLOW
Definition:
los_lockdep.h:51
OsLockdepClearSpinlocks
VOID OsLockdepClearSpinlocks(VOID)
Definition:
los_lockdep.c:329
INT32
signed int INT32
Definition:
los_typedef.h:60
UINT64
long unsigned int UINT64
Definition:
los_typedef.h:66
HeldLocks
Definition:
los_lockdep.h:54
HeldLocks::lockPtr
VOID * lockPtr
Definition:
los_lockdep.h:55
HeldLocks::lockAddr
VOID * lockAddr
Definition:
los_lockdep.h:56
HeldLocks::holdTime
UINT64 holdTime
Definition:
los_lockdep.h:58
HeldLocks::waitTime
UINT64 waitTime
Definition:
los_lockdep.h:57
LockDep
Definition:
los_lockdep.h:61
LockDep::lockDepth
INT32 lockDepth
Definition:
los_lockdep.h:63
LockDep::waitLock
VOID * waitLock
Definition:
los_lockdep.h:62
Spinlock
Definition:
los_spinlock.h:50
kernel
include
los_lockdep.h
公众号:鸿蒙研究站(weharmonyos)
|
论坛: bbs.weharmonyos.com
| 制作者
鸿蒙研究站 | weharmonyos.com