天天看點

【LiteOS】LiteOS任務篇-源碼分析-删除任務函數

目錄

前言

筆錄草稿

源碼分析

LOS_TaskDelete函數源碼分析完整源碼

參考連結

20201009

LiteOS 2018

需要會通用連結清單

進入處理前,需要進入任務臨界

通過任務ID來擷取任務句柄

根據各種狀态進行處理

處于 OS_TASK_STATUS_UNUSED (未使用) 狀态

退出

處于 OS_TASK_STATUS_RUNNING (運作态) 且排程被鎖定了

解鎖任務排程

處于 就緒态 或 阻塞态 或 阻塞隊列态

處于 OS_TASK_STATUS_READY (就緒态)

從就緒清單中删除該節點

取消該任務的就緒态

處于 OS_TASK_STATUS_PEND(阻塞态) 或 OS_TASK_STATUS_PEND_QUEUE(阻塞隊列态)

處于 OS_TASK_STATUS_DELAY (延時态)或 OS_TASK_STATUS_TIMEOUT(逾時态)

從時間清單中删除該任務

被删除的任務需要做一些複位處理

初始化任務狀态

初始化任務事件相關的一些變量

被删除的任務s是否處于運作态

不能完全删除該任務,因為,排程過程中需要該任務參與

把目前任務插入到回收清單中,待運作建立任務函數時在進行回收處理。(其它RTOS都是在空閑任務中處理)

把目前任務(被删除的任務)copy到最低優先級的任務中,即是比空閑任務還低一個優先級的備用任務中,被賦給 g_stLosTask.pstRunTask,用于下main排程使用

解鎖中斷

排程

标記為未使用狀态

直接放到空閑清單中

釋放任務堆空間

初始化棧頂指針

LiteOS源碼連結

常見問題

華為開發者社群

華為LiteOS官方教程

我的源碼

包含 裸機源碼

LiteOS 工程模闆

其它關于 LiteOS 的 demo 及 note

繼續閱讀