feat: 低功耗支持冻结线程等需求 1.支持低功耗时冻结线程 2.支持延时锁 3.低功耗与idle分离 4.支持对接电源管组件的低功耗接口 LOS_PmReadLock --- 常阻塞,低功耗线程阻塞于该接口,当系统无任何模块持锁时会唤醒低功耗线程, 触发低功耗流程 LOS_PmSuspend --- 进入低功耗流程 Close #I49FJF Signed-off-by: zhushengle <zhushengle@huawei.com> Change-Id: I009255cfa1852b109dd8bfaf9c779e976660d621
This commit is contained in:
@@ -44,6 +44,9 @@
|
||||
#if (LOSCFG_BASE_CORE_CPUP == 1)
|
||||
#include "los_cpup.h"
|
||||
#endif
|
||||
#if (LOSCFG_KERNEL_PM == 1)
|
||||
#include "los_pm.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup los_task
|
||||
@@ -403,7 +406,6 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsIdleTaskCreate(VOID)
|
||||
taskInitParam.pcName = "IdleCore000";
|
||||
taskInitParam.usTaskPrio = OS_TASK_PRIORITY_LOWEST;
|
||||
retVal = LOS_TaskCreateOnly(&g_idleTaskID, &taskInitParam);
|
||||
|
||||
if (retVal != LOS_OK) {
|
||||
return retVal;
|
||||
}
|
||||
@@ -803,6 +805,12 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskResume(UINT32 taskID)
|
||||
OS_GOTO_ERREND();
|
||||
}
|
||||
|
||||
#if (LOSCFG_KERNEL_PM == 1)
|
||||
if (tempStatus & OS_TASK_FALG_FREEZE) {
|
||||
OsPmUnfreezeTaskUnsafe(taskID);
|
||||
}
|
||||
#endif
|
||||
|
||||
taskCB->taskStatus &= (~OS_TASK_STATUS_SUSPEND);
|
||||
if (!(taskCB->taskStatus & OS_CHECK_TASK_BLOCK)) {
|
||||
OsSchedTaskEnQueue(taskCB);
|
||||
@@ -862,6 +870,12 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskSuspend(UINT32 taskID)
|
||||
OsSchedTaskDeQueue(taskCB);
|
||||
}
|
||||
|
||||
#if (LOSCFG_KERNEL_PM == 1)
|
||||
if ((tempStatus & (OS_TASK_STATUS_PEND_TIME | OS_TASK_STATUS_DELAY)) && OsIsPmMode()) {
|
||||
OsPmFreezeTaskUnsafe(taskID);
|
||||
}
|
||||
#endif
|
||||
|
||||
taskCB->taskStatus |= OS_TASK_STATUS_SUSPEND;
|
||||
OsHookCall(LOS_HOOK_TYPE_MOVEDTASKTOSUSPENDEDLIST, taskCB);
|
||||
if (taskID == g_losTask.runTask->taskID) {
|
||||
|
||||
Reference in New Issue
Block a user