fix: shell模块task命令踩内存问题修改
【背景】task命令获取内存时传入的参数过大,可能引起踩内存问题。 【修改方案】 1,对task命令中获取内存信息时的入参进行调整,避免引起内存问题 【影响】 对现有的产品编译不会有影响。 re #I4A70V Signed-off-by: wangchen <253227059@qq.com>
This commit is contained in:
parent
4700ba6973
commit
6ffd55dcd0
|
@ -105,7 +105,7 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
|
|||
return;
|
||||
}
|
||||
(VOID)memset_s(getUsedSizeArray, arraySize, 0, arraySize);
|
||||
OsTaskMemUsed(m_aucSysMem0, getUsedSizeArray, arraySize);
|
||||
OsTaskMemUsed(m_aucSysMem0, getUsedSizeArray, (LOSCFG_BASE_CORE_TSK_LIMIT + 1));
|
||||
#endif
|
||||
|
||||
for (loop = 0; loop < g_taskMaxNum; ++loop) {
|
||||
|
|
|
@ -469,7 +469,7 @@ extern UINT32 LOS_MemIntegrityCheck(const VOID *pool);
|
|||
extern VOID LOS_MemUnlockEnable(VOID *pool);
|
||||
|
||||
extern UINT32 OsMemSystemInit(VOID);
|
||||
extern VOID OsTaskMemUsed(VOID *pool, UINT32 *outArray, UINT32 arraySize);
|
||||
extern VOID OsTaskMemUsed(VOID *pool, UINT32 *tskMemInfoBuf, UINT32 tskMemInfoCnt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
|
|
|
@ -345,23 +345,23 @@ STATIC VOID OsAllMemNodeDoHandle(VOID *pool, VOID (*handle)(struct OsMemNodeHead
|
|||
STATIC VOID GetTaskMemUsedHandle(struct OsMemNodeHead *curNode, VOID *arg)
|
||||
{
|
||||
UINT32 *args = (UINT32 *)arg;
|
||||
UINT32 *outArray = (UINT32 *)(UINTPTR)*args;
|
||||
UINT32 arraySize = *(args + 1);
|
||||
UINT32 *tskMemInfoBuf = (UINT32 *)(UINTPTR)*args;
|
||||
UINT32 tskMemInfoCnt = *(args + 1);
|
||||
#ifndef LOSCFG_MEM_MUL_REGIONS
|
||||
if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag)) {
|
||||
#else
|
||||
if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag) && !OS_MEM_IS_GAP_NODE(curNode)) {
|
||||
#endif
|
||||
if (curNode->taskID < arraySize) {
|
||||
outArray[curNode->taskID] += OS_MEM_NODE_GET_SIZE(curNode->sizeAndFlag);
|
||||
if (curNode->taskID < tskMemInfoCnt) {
|
||||
tskMemInfoBuf[curNode->taskID] += OS_MEM_NODE_GET_SIZE(curNode->sizeAndFlag);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
VOID OsTaskMemUsed(VOID *pool, UINT32 *outArray, UINT32 arraySize)
|
||||
VOID OsTaskMemUsed(VOID *pool, UINT32 *tskMemInfoBuf, UINT32 tskMemInfoCnt)
|
||||
{
|
||||
UINT32 args[2] = {(UINT32)(UINTPTR)outArray, arraySize};
|
||||
UINT32 args[2] = {(UINT32)(UINTPTR)tskMemInfoBuf, tskMemInfoCnt};
|
||||
OsAllMemNodeDoHandle(pool, GetTaskMemUsedHandle, (VOID *)args);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue