生活随笔
收集整理的这篇文章主要介绍了
任务的挂起与唤醒
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
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自己动手写嵌入式操作系统
总结
以上是生活随笔为你收集整理的任务的挂起与唤醒的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。