生活随笔
收集整理的這篇文章主要介紹了
任务的挂起与唤醒
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
1 任務的掛起與喚醒
1.1 概述
現有的任務狀態切換圖:
任務的掛起就是暫時禁止任務占用CPU運行,簡單來說,就是無條件暫停任務運行。
新的任務狀態切換圖:
1.2 設計實現
添加掛起計數器:
掛起函數:
恢復函數:
實現代碼如下:
void tTaskSuspend
(tTask
* task
)
{uint32_t status
= tTaskEnterCritical();if (!(task
->state
& TINYOS_TASK_STATE_DELAYED
)) {if (++task
->suspendCount
<= 1){task
->state
|= TINYOS_TASK_STATE_SUSPEND
;tTaskSchedUnRdy(task
);if (task
== currentTask
){tTaskSched();}}}tTaskExitCritical(status
);
}
void tTaskWakeUp
(tTask
* task
)
{uint32_t status
= tTaskEnterCritical();if (task
->state
& TINYOS_TASK_STATE_SUSPEND
){if (--task
->suspendCount
== 0) {task
->state
&= ~TINYOS_TASK_STATE_SUSPEND
;tTaskSchedRdy(task
);tTaskSched();}}tTaskExitCritical(status
);
}
參考資料:
【李述銅】從0到1自己動手寫嵌入式操作系統
總結
以上是生活随笔為你收集整理的任务的挂起与唤醒的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。