feat: 进程cpup占用率结构优化为动态分配

Close #I4GLNT
Signed-off-by: zhushengle <zhushengle@huawei.com>
Change-Id: I7f3dd61bbf014fa157b1f9a0a089fd985fe188c2
This commit is contained in:
zhushengle
2021-11-02 19:15:04 +08:00
parent 38163de8f3
commit f06e090a10
4 changed files with 50 additions and 14 deletions

View File

@@ -376,6 +376,15 @@ LITE_OS_SEC_TEXT VOID OsProcessResourcesToFree(LosProcessCB *processCB)
(VOID)LiteIpcPoolDestroy(processCB->processID);
#endif
#ifdef LOSCFG_KERNEL_CPUP
UINT32 intSave;
OsCpupBase *processCpup = processCB->processCpup;
SCHEDULER_LOCK(intSave);
processCB->processCpup = NULL;
SCHEDULER_UNLOCK(intSave);
(VOID)LOS_MemFree(m_aucSysMem1, processCpup);
#endif
if (processCB->resourceLimit != NULL) {
(VOID)LOS_MemFree((VOID *)m_aucSysMem0, processCB->resourceLimit);
processCB->resourceLimit = NULL;
@@ -654,12 +663,21 @@ STATIC UINT32 OsInitPCB(LosProcessCB *processCB, UINT32 mode, UINT16 priority, c
}
#endif
#ifdef LOSCFG_KERNEL_CPUP
processCB->processCpup = (OsCpupBase *)LOS_MemAlloc(m_aucSysMem1, sizeof(OsCpupBase));
if (processCB->processCpup == NULL) {
return LOS_ENOMEM;
}
(VOID)memset_s(processCB->processCpup, sizeof(OsCpupBase), 0, sizeof(OsCpupBase));
#endif
#ifdef LOSCFG_SECURITY_VID
status_t status = VidMapListInit(processCB);
if (status != LOS_OK) {
return LOS_ENOMEM;
}
#endif
#ifdef LOSCFG_SECURITY_CAPABILITY
OsInitCapability(processCB);
#endif

View File

@@ -125,7 +125,7 @@ typedef struct ProcessCB {
#endif
mode_t umask;
#ifdef LOSCFG_KERNEL_CPUP
OsCpupBase processCpup; /**< Process cpu usage */
OsCpupBase *processCpup; /**< Process cpu usage */
#endif
struct rlimit *resourceLimit;
} LosProcessCB;