Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
38163de8
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
大约 2 年 前同步成功
通知
475
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看板
提交
38163de8
编写于
11月 02, 2021
作者:
O
openharmony_ci
提交者:
Gitee
11月 02, 2021
浏览文件
操作
浏览文件
下载
差异文件
!687 feat: liteipc 静态内存优化
Merge pull request !687 from zhushengle/liteipc
上级
fcb21ffc
52379242
变更
6
展开全部
隐藏空白更改
内联
并排
Showing
6 changed file
with
207 addition
and
118 deletion
+207
-118
kernel/base/core/los_process.c
kernel/base/core/los_process.c
+5
-21
kernel/base/core/los_task.c
kernel/base/core/los_task.c
+1
-4
kernel/base/include/los_process_pri.h
kernel/base/include/los_process_pri.h
+1
-1
kernel/base/include/los_task_pri.h
kernel/base/include/los_task_pri.h
+4
-3
kernel/extended/liteipc/hm_liteipc.c
kernel/extended/liteipc/hm_liteipc.c
+186
-80
kernel/extended/liteipc/hm_liteipc.h
kernel/extended/liteipc/hm_liteipc.h
+10
-9
未找到文件。
kernel/base/core/los_process.c
浏览文件 @
38163de8
...
@@ -373,10 +373,7 @@ LITE_OS_SEC_TEXT VOID OsProcessResourcesToFree(LosProcessCB *processCB)
...
@@ -373,10 +373,7 @@ LITE_OS_SEC_TEXT VOID OsProcessResourcesToFree(LosProcessCB *processCB)
#endif
#endif
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
if
(
OsProcessIsUserMode
(
processCB
))
{
(
VOID
)
LiteIpcPoolDestroy
(
processCB
->
processID
);
LiteIpcPoolDelete
(
&
(
processCB
->
ipcInfo
),
processCB
->
processID
);
(
VOID
)
memset_s
(
&
(
processCB
->
ipcInfo
),
sizeof
(
ProcIpcInfo
),
0
,
sizeof
(
ProcIpcInfo
));
}
#endif
#endif
if
(
processCB
->
resourceLimit
!=
NULL
)
{
if
(
processCB
->
resourceLimit
!=
NULL
)
{
...
@@ -750,16 +747,6 @@ STATIC UINT32 OsProcessCreateInit(LosProcessCB *processCB, UINT32 flags, const C
...
@@ -750,16 +747,6 @@ STATIC UINT32 OsProcessCreateInit(LosProcessCB *processCB, UINT32 flags, const C
goto
EXIT
;
goto
EXIT
;
}
}
#ifdef LOSCFG_KERNEL_LITEIPC
if
(
OsProcessIsUserMode
(
processCB
))
{
ret
=
LiteIpcPoolInit
(
&
(
processCB
->
ipcInfo
));
if
(
ret
!=
LOS_OK
)
{
ret
=
LOS_ENOMEM
;
goto
EXIT
;
}
}
#endif
#ifdef LOSCFG_FS_VFS
#ifdef LOSCFG_FS_VFS
processCB
->
files
=
alloc_files
();
processCB
->
files
=
alloc_files
();
if
(
processCB
->
files
==
NULL
)
{
if
(
processCB
->
files
==
NULL
)
{
...
@@ -1439,10 +1426,7 @@ LITE_OS_SEC_TEXT UINT32 OsExecRecycleAndInit(LosProcessCB *processCB, const CHAR
...
@@ -1439,10 +1426,7 @@ LITE_OS_SEC_TEXT UINT32 OsExecRecycleAndInit(LosProcessCB *processCB, const CHAR
}
}
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
ret
=
LiteIpcPoolInit
(
&
(
processCB
->
ipcInfo
));
(
VOID
)
LiteIpcPoolDestroy
(
processCB
->
processID
);
if
(
ret
!=
LOS_OK
)
{
return
LOS_NOK
;
}
#endif
#endif
processCB
->
sigHandler
=
0
;
processCB
->
sigHandler
=
0
;
...
@@ -1833,9 +1817,9 @@ STATIC UINT32 OsCopyProcessResources(UINT32 flags, LosProcessCB *child, LosProce
...
@@ -1833,9 +1817,9 @@ STATIC UINT32 OsCopyProcessResources(UINT32 flags, LosProcessCB *child, LosProce
}
}
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
if
(
OsProcessIsUserMode
(
child
)
)
{
if
(
run
->
ipcInfo
!=
NULL
)
{
ret
=
LiteIpcPoolReInit
(
&
child
->
ipcInfo
,
(
const
ProcIpcInfo
*
)(
&
run
->
ipcInfo
));
child
->
ipcInfo
=
LiteIpcPoolReInit
((
const
ProcIpcInfo
*
)(
run
->
ipcInfo
));
if
(
ret
!=
LOS_OK
)
{
if
(
child
->
ipcInfo
==
NULL
)
{
return
LOS_ENOMEM
;
return
LOS_ENOMEM
;
}
}
}
}
...
...
kernel/base/core/los_task.c
浏览文件 @
38163de8
...
@@ -510,7 +510,7 @@ LITE_OS_SEC_TEXT VOID OsTaskResourcesToFree(LosTaskCB *taskCB)
...
@@ -510,7 +510,7 @@ LITE_OS_SEC_TEXT VOID OsTaskResourcesToFree(LosTaskCB *taskCB)
}
}
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
LiteIpcRemoveServiceHandle
(
taskCB
);
LiteIpcRemoveServiceHandle
(
taskCB
->
taskID
);
#endif
#endif
}
}
#endif
#endif
...
@@ -552,9 +552,6 @@ LITE_OS_SEC_TEXT_INIT STATIC VOID OsTaskCBInitBase(LosTaskCB *taskCB,
...
@@ -552,9 +552,6 @@ LITE_OS_SEC_TEXT_INIT STATIC VOID OsTaskCBInitBase(LosTaskCB *taskCB,
taskCB
->
currCpu
=
OS_TASK_INVALID_CPUID
;
taskCB
->
currCpu
=
OS_TASK_INVALID_CPUID
;
taskCB
->
cpuAffiMask
=
(
initParam
->
usCpuAffiMask
)
?
taskCB
->
cpuAffiMask
=
(
initParam
->
usCpuAffiMask
)
?
initParam
->
usCpuAffiMask
:
LOSCFG_KERNEL_CPU_MASK
;
initParam
->
usCpuAffiMask
:
LOSCFG_KERNEL_CPU_MASK
;
#endif
#ifdef LOSCFG_KERNEL_LITEIPC
LOS_ListInit
(
&
(
taskCB
->
msgListHead
));
#endif
#endif
taskCB
->
policy
=
(
initParam
->
policy
==
LOS_SCHED_FIFO
)
?
LOS_SCHED_FIFO
:
LOS_SCHED_RR
;
taskCB
->
policy
=
(
initParam
->
policy
==
LOS_SCHED_FIFO
)
?
LOS_SCHED_FIFO
:
LOS_SCHED_RR
;
taskCB
->
taskStatus
=
OS_TASK_STATUS_INIT
;
taskCB
->
taskStatus
=
OS_TASK_STATUS_INIT
;
...
...
kernel/base/include/los_process_pri.h
浏览文件 @
38163de8
...
@@ -103,7 +103,7 @@ typedef struct ProcessCB {
...
@@ -103,7 +103,7 @@ typedef struct ProcessCB {
UINTPTR
sigHandler
;
/**< Signal handler */
UINTPTR
sigHandler
;
/**< Signal handler */
sigset_t
sigShare
;
/**< Signal share bit */
sigset_t
sigShare
;
/**< Signal share bit */
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
ProcIpcInfo
ipcInfo
;
/**< Memory pool for lite ipc */
ProcIpcInfo
*
ipcInfo
;
/**< Memory pool for lite ipc */
#endif
#endif
#ifdef LOSCFG_KERNEL_VM
#ifdef LOSCFG_KERNEL_VM
LosVmSpace
*
vmSpace
;
/**< VMM space for processes */
LosVmSpace
*
vmSpace
;
/**< VMM space for processes */
...
...
kernel/base/include/los_task_pri.h
浏览文件 @
38163de8
...
@@ -44,7 +44,9 @@
...
@@ -44,7 +44,9 @@
#ifdef LOSCFG_KERNEL_CPUP
#ifdef LOSCFG_KERNEL_CPUP
#include "los_cpup_pri.h"
#include "los_cpup_pri.h"
#endif
#endif
#ifdef LOSCFG_KERNEL_LITEIPC
#include "hm_liteipc.h"
#endif
#ifdef __cplusplus
#ifdef __cplusplus
#if __cplusplus
#if __cplusplus
extern
"C"
{
extern
"C"
{
...
@@ -359,8 +361,7 @@ typedef struct {
...
@@ -359,8 +361,7 @@ typedef struct {
UINT16
waitFlag
;
/**< The type of child process that is waiting, belonging to a group or parent,
UINT16
waitFlag
;
/**< The type of child process that is waiting, belonging to a group or parent,
a specific child process, or any child process */
a specific child process, or any child process */
#ifdef LOSCFG_KERNEL_LITEIPC
#ifdef LOSCFG_KERNEL_LITEIPC
LOS_DL_LIST
msgListHead
;
IpcTaskInfo
*
ipcTaskInfo
;
BOOL
accessMap
[
LOSCFG_BASE_CORE_TSK_LIMIT
];
#endif
#endif
#ifdef LOSCFG_KERNEL_PERF
#ifdef LOSCFG_KERNEL_PERF
UINTPTR
pc
;
UINTPTR
pc
;
...
...
kernel/extended/liteipc/hm_liteipc.c
浏览文件 @
38163de8
此差异已折叠。
点击以展开。
kernel/extended/liteipc/hm_liteipc.h
浏览文件 @
38163de8
...
@@ -34,7 +34,6 @@
...
@@ -34,7 +34,6 @@
#include "sys/ioctl.h"
#include "sys/ioctl.h"
#include "los_config.h"
#include "los_config.h"
#include "los_task_pri.h"
#include "los_typedef.h"
#include "los_typedef.h"
#include "los_vm_map.h"
#include "los_vm_map.h"
...
@@ -70,9 +69,15 @@ typedef struct {
...
@@ -70,9 +69,15 @@ typedef struct {
typedef
struct
{
typedef
struct
{
IpcPool
pool
;
IpcPool
pool
;
UINT32
ipcTaskID
;
UINT32
ipcTaskID
;
LOS_DL_LIST
ipcUsedNodelist
;
UINT32
access
[
LOSCFG_BASE_CORE_TSK_LIMIT
];
UINT32
access
[
LOSCFG_BASE_CORE_TSK_LIMIT
];
}
ProcIpcInfo
;
}
ProcIpcInfo
;
typedef
struct
{
LOS_DL_LIST
msgListHead
;
BOOL
accessMap
[
LOSCFG_BASE_CORE_TSK_LIMIT
];
}
IpcTaskInfo
;
typedef
enum
{
typedef
enum
{
OBJ_FD
,
OBJ_FD
,
OBJ_PTR
,
OBJ_PTR
,
...
@@ -172,17 +177,13 @@ typedef struct {
...
@@ -172,17 +177,13 @@ typedef struct {
/* init liteipc driver */
/* init liteipc driver */
extern
UINT32
OsLiteIpcInit
(
VOID
);
extern
UINT32
OsLiteIpcInit
(
VOID
);
/* init process liteipc memory pool */
extern
UINT32
LiteIpcPoolInit
(
ProcIpcInfo
*
ipcInfo
);
/* reinit process liteipc memory pool, using in fork situation */
/* reinit process liteipc memory pool, using in fork situation */
extern
UINT32
LiteIpcPoolReInit
(
ProcIpcInfo
*
childIpcInfo
,
const
ProcIpcInfo
*
parentIpcInfo
);
extern
ProcIpcInfo
*
LiteIpcPoolReInit
(
const
ProcIpcInfo
*
parentIpcInfo
);
/* delete process liteipc memory pool */
extern
VOID
LiteIpcPoolDelete
(
ProcIpcInfo
*
ipcInfo
,
UINT32
processID
);
/* remove service handle and send death notify */
/* remove service handle and send death notify */
extern
VOID
LiteIpcRemoveServiceHandle
(
LosTaskCB
*
taskCB
);
extern
VOID
LiteIpcRemoveServiceHandle
(
UINT32
taskID
);
extern
UINT32
LiteIpcPoolDestroy
(
UINT32
processID
);
#ifdef __cplusplus
#ifdef __cplusplus
#if __cplusplus
#if __cplusplus
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录