Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
af2b0ac7
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
1 年多 前同步成功
通知
464
Star
414
Fork
55
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
af2b0ac7
编写于
4月 16, 2021
作者:
O
openharmony_ci
提交者:
Gitee
4月 16, 2021
浏览文件
操作
浏览文件
下载
差异文件
!144 用于检测umount栈溢出的调测功能
Merge pull request !144 from ysy4tc3/dev
上级
62e708c7
7e0e4682
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
1 deletion
+23
-1
fs/include/fs/path_cache.h
fs/include/fs/path_cache.h
+1
-0
fs/vfs/path_cache.c
fs/vfs/path_cache.c
+2
-1
fs/vfs/vnode.c
fs/vfs/vnode.c
+20
-0
未找到文件。
fs/include/fs/path_cache.h
浏览文件 @
af2b0ac7
...
...
@@ -52,5 +52,6 @@ int PathCacheAllocDummy(struct Vnode *parent, struct Vnode **vnode, const char *
int
PathCacheLookup
(
struct
Vnode
*
parent
,
const
char
*
name
,
int
len
,
struct
Vnode
**
vnode
);
void
VnodePathCacheFree
(
struct
Vnode
*
vnode
);
void
PathCacheMemoryDump
(
void
);
void
PathCacheDump
(
void
);
#endif
/* _PATH_CACHE_H */
fs/vfs/path_cache.c
浏览文件 @
af2b0ac7
...
...
@@ -54,7 +54,8 @@ void PathCacheDump(void)
LIST_HEAD
*
nhead
=
&
g_pathCacheHashEntrys
[
i
];
LOS_DL_LIST_FOR_EACH_ENTRY
(
nc
,
nhead
,
struct
PathCache
,
hashEntry
)
{
PRINTK
(
" pathCache dump hash %d item %s %p %d
\n
"
,
i
,
nc
->
name
,
nc
->
parentVnode
,
nc
->
nameLen
);
PRINTK
(
" pathCache dump hash %d item %s %p %p %d
\n
"
,
i
,
nc
->
name
,
nc
->
parentVnode
,
nc
->
childVnode
,
nc
->
nameLen
);
}
}
PRINTK
(
"-------->pathCache dump out
\n
"
);
...
...
fs/vfs/vnode.c
浏览文件 @
af2b0ac7
...
...
@@ -50,6 +50,7 @@ extern struct Vnode *g_coveredVnodeList[100];
#define ENTRY_TO_VNODE(ptr) LOS_DL_LIST_ENTRY(ptr, struct Vnode, actFreeEntry)
#define VNODE_LRU_COUNT 10
#define DEV_VNODE_MODE 0755
#define MAX_ITER_TIMES 10
int
VnodesInit
(
void
)
{
...
...
@@ -249,12 +250,29 @@ int VnodeFreeAll(struct Mount *mnt)
return
0
;
}
static
VOID
VnodeIterDump
(
struct
Vnode
*
vnode
,
int
increase
)
{
static
int
count
=
0
;
LIST_ENTRY
*
list
=
&
vnode
->
parentPathCaches
;
struct
PathCache
*
pathCache
=
LOS_DL_LIST_ENTRY
(
list
->
pstNext
,
struct
PathCache
,
parentEntry
);
count
+=
increase
;
if
(
count
>=
MAX_ITER_TIMES
)
{
PRINTK
(
"########## Vnode In Use Iteration ##########
\n
"
);
PRINTK
(
"Iteration times: %d
\n
"
,
count
);
PRINTK
(
"%p -- %s --> %p
\n
"
,
vnode
->
parent
,
pathCache
->
name
,
vnode
);
PathCacheDump
();
}
}
BOOL
VnodeInUseIter
(
struct
Vnode
*
vnode
)
{
struct
Vnode
*
vp
=
NULL
;
struct
PathCache
*
item
=
NULL
;
struct
PathCache
*
nextItem
=
NULL
;
VnodeIterDump
(
vnode
,
1
);
if
(
vnode
->
useCount
>
0
)
{
VnodeIterDump
(
vnode
,
-
1
);
return
TRUE
;
}
LOS_DL_LIST_FOR_EACH_ENTRY_SAFE
(
item
,
nextItem
,
&
vnode
->
childPathCaches
,
struct
PathCache
,
childEntry
)
{
...
...
@@ -263,9 +281,11 @@ BOOL VnodeInUseIter(struct Vnode *vnode)
continue
;
}
if
(
VnodeInUseIter
(
vp
)
==
TRUE
)
{
VnodeIterDump
(
vnode
,
-
1
);
return
TRUE
;
}
}
VnodeIterDump
(
vnode
,
-
1
);
return
FALSE
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录