fix: shell模块task命令踩内存问题修改

【背景】task命令获取内存时传入的参数过大,可能引起踩内存问题。

【修改方案】
1,对task命令中获取内存信息时的入参进行调整,避免引起内存问题

【影响】
对现有的产品编译不会有影响。

re #I4A70V
Signed-off-by: wangchen <253227059@qq.com>
This commit is contained in:
wangchen 2021-09-16 15:52:57 +08:00
parent 4700ba6973
commit 6ffd55dcd0
3 changed files with 8 additions and 8 deletions

View File

@ -105,7 +105,7 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
return; return;
} }
(VOID)memset_s(getUsedSizeArray, arraySize, 0, arraySize); (VOID)memset_s(getUsedSizeArray, arraySize, 0, arraySize);
OsTaskMemUsed(m_aucSysMem0, getUsedSizeArray, arraySize); OsTaskMemUsed(m_aucSysMem0, getUsedSizeArray, (LOSCFG_BASE_CORE_TSK_LIMIT + 1));
#endif #endif
for (loop = 0; loop < g_taskMaxNum; ++loop) { for (loop = 0; loop < g_taskMaxNum; ++loop) {

View File

@ -469,7 +469,7 @@ extern UINT32 LOS_MemIntegrityCheck(const VOID *pool);
extern VOID LOS_MemUnlockEnable(VOID *pool); extern VOID LOS_MemUnlockEnable(VOID *pool);
extern UINT32 OsMemSystemInit(VOID); extern UINT32 OsMemSystemInit(VOID);
extern VOID OsTaskMemUsed(VOID *pool, UINT32 *outArray, UINT32 arraySize); extern VOID OsTaskMemUsed(VOID *pool, UINT32 *tskMemInfoBuf, UINT32 tskMemInfoCnt);
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus

View File

@ -345,23 +345,23 @@ STATIC VOID OsAllMemNodeDoHandle(VOID *pool, VOID (*handle)(struct OsMemNodeHead
STATIC VOID GetTaskMemUsedHandle(struct OsMemNodeHead *curNode, VOID *arg) STATIC VOID GetTaskMemUsedHandle(struct OsMemNodeHead *curNode, VOID *arg)
{ {
UINT32 *args = (UINT32 *)arg; UINT32 *args = (UINT32 *)arg;
UINT32 *outArray = (UINT32 *)(UINTPTR)*args; UINT32 *tskMemInfoBuf = (UINT32 *)(UINTPTR)*args;
UINT32 arraySize = *(args + 1); UINT32 tskMemInfoCnt = *(args + 1);
#ifndef LOSCFG_MEM_MUL_REGIONS #ifndef LOSCFG_MEM_MUL_REGIONS
if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag)) { if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag)) {
#else #else
if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag) && !OS_MEM_IS_GAP_NODE(curNode)) { if (OS_MEM_NODE_GET_USED_FLAG(curNode->sizeAndFlag) && !OS_MEM_IS_GAP_NODE(curNode)) {
#endif #endif
if (curNode->taskID < arraySize) { if (curNode->taskID < tskMemInfoCnt) {
outArray[curNode->taskID] += OS_MEM_NODE_GET_SIZE(curNode->sizeAndFlag); tskMemInfoBuf[curNode->taskID] += OS_MEM_NODE_GET_SIZE(curNode->sizeAndFlag);
} }
} }
return; 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); OsAllMemNodeDoHandle(pool, GetTaskMemUsedHandle, (VOID *)args);
return; return;
} }