Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
21312370
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
接近 2 年 前同步成功
通知
474
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看板
提交
21312370
编写于
4月 20, 2021
作者:
O
openharmony_ci
提交者:
Gitee
4月 20, 2021
浏览文件
操作
浏览文件
下载
差异文件
!152 修复LOS_RegionFind等接口竞态问题
Merge pull request !152 from JerryH/master
上级
81cdf0c6
74af06d5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
3 deletion
+22
-3
kernel/base/mem/tlsf/los_memory.c
kernel/base/mem/tlsf/los_memory.c
+2
-0
kernel/base/vm/los_vm_map.c
kernel/base/vm/los_vm_map.c
+14
-2
syscall/syscall_pub.h
syscall/syscall_pub.h
+6
-1
未找到文件。
kernel/base/mem/tlsf/los_memory.c
浏览文件 @
21312370
...
@@ -1820,6 +1820,8 @@ UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)
...
@@ -1820,6 +1820,8 @@ UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)
return
LOS_NOK
;
return
LOS_NOK
;
}
}
(
VOID
)
memset_s
(
poolStatus
,
sizeof
(
LOS_MEM_POOL_STATUS
),
0
,
sizeof
(
LOS_MEM_POOL_STATUS
));
struct
OsMemNodeHead
*
tmpNode
=
NULL
;
struct
OsMemNodeHead
*
tmpNode
=
NULL
;
struct
OsMemNodeHead
*
endNode
=
NULL
;
struct
OsMemNodeHead
*
endNode
=
NULL
;
UINT32
intSave
;
UINT32
intSave
;
...
...
kernel/base/vm/los_vm_map.c
浏览文件 @
21312370
...
@@ -370,12 +370,24 @@ LosVmMapRegion *OsFindRegion(LosRbTree *regionRbTree, VADDR_T vaddr, size_t len)
...
@@ -370,12 +370,24 @@ LosVmMapRegion *OsFindRegion(LosRbTree *regionRbTree, VADDR_T vaddr, size_t len)
LosVmMapRegion
*
LOS_RegionFind
(
LosVmSpace
*
vmSpace
,
VADDR_T
addr
)
LosVmMapRegion
*
LOS_RegionFind
(
LosVmSpace
*
vmSpace
,
VADDR_T
addr
)
{
{
return
OsFindRegion
(
&
vmSpace
->
regionRbTree
,
addr
,
1
);
LosVmMapRegion
*
region
=
NULL
;
(
VOID
)
LOS_MuxAcquire
(
&
vmSpace
->
regionMux
);
region
=
OsFindRegion
(
&
vmSpace
->
regionRbTree
,
addr
,
1
);
(
VOID
)
LOS_MuxRelease
(
&
vmSpace
->
regionMux
);
return
region
;
}
}
LosVmMapRegion
*
LOS_RegionRangeFind
(
LosVmSpace
*
vmSpace
,
VADDR_T
addr
,
size_t
len
)
LosVmMapRegion
*
LOS_RegionRangeFind
(
LosVmSpace
*
vmSpace
,
VADDR_T
addr
,
size_t
len
)
{
{
return
OsFindRegion
(
&
vmSpace
->
regionRbTree
,
addr
,
len
);
LosVmMapRegion
*
region
=
NULL
;
(
VOID
)
LOS_MuxAcquire
(
&
vmSpace
->
regionMux
);
region
=
OsFindRegion
(
&
vmSpace
->
regionRbTree
,
addr
,
len
);
(
VOID
)
LOS_MuxRelease
(
&
vmSpace
->
regionMux
);
return
region
;
}
}
VADDR_T
OsAllocRange
(
LosVmSpace
*
vmSpace
,
size_t
len
)
VADDR_T
OsAllocRange
(
LosVmSpace
*
vmSpace
,
size_t
len
)
...
...
syscall/syscall_pub.h
浏览文件 @
21312370
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include <stdlib.h>
#include <stdlib.h>
#include "los_memory.h"
#include "los_memory.h"
#include "los_vm_lock.h"
#include "los_vm_map.h"
#include "los_vm_map.h"
#include "user_copy.h"
#include "user_copy.h"
...
@@ -47,11 +48,15 @@ extern void *DupUserMem(const void *ptr, size_t len, int needCopy);
...
@@ -47,11 +48,15 @@ extern void *DupUserMem(const void *ptr, size_t len, int needCopy);
__VA_ARGS__
;
\
__VA_ARGS__
;
\
return
-
get_errno
();
\
return
-
get_errno
();
\
}
\
}
\
if
(
CheckRegion
(
OsCurrProcessGet
()
->
vmSpace
,
(
VADDR_T
)(
UINTPTR
)
ptr
,
len
)
==
-
1
)
{
\
LosVmSpace
*
__aspace
=
OsCurrProcessGet
()
->
vmSpace
;
\
(
VOID
)
LOS_MuxAcquire
(
&
__aspace
->
regionMux
);
\
if
(
CheckRegion
(
__aspace
,
(
VADDR_T
)(
UINTPTR
)
ptr
,
len
)
==
-
1
)
{
\
(
VOID
)
LOS_MuxRelease
(
&
__aspace
->
regionMux
);
\
set_errno
(
EFAULT
);
\
set_errno
(
EFAULT
);
\
__VA_ARGS__
;
\
__VA_ARGS__
;
\
return
-
get_errno
();
\
return
-
get_errno
();
\
}
\
}
\
(
VOID
)
LOS_MuxRelease
(
&
__aspace
->
regionMux
);
\
}
\
}
\
}
while
(
0
)
}
while
(
0
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录