FreeRTOS 源码注释(prvCheckTasksWaitingTermination)
来源:互联网 发布:苹果软件下载排行 编辑:程序博客网 时间:2024/05/17 04:13
/*FreeRTOS 中删除任务是分两步的,第一步 vTaskDelete 将其从各个工作链表中断开,放到xTasksWaitingTermination 链表中,第二步 Idle Task 调用这个函数真正的删除任务。代码很简单,不需要注释了。 */
static void prvCheckTasksWaitingTermination( void )
{
#if ( INCLUDE_vTaskDelete == 1 )
{
portBASE_TYPE xListIsEmpty;
if( uxTasksDeleted > ( unsigned portBASE_TYPE ) 0 )
{
vTaskSuspendAll();
xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination );
xTaskResumeAll();
if( xListIsEmpty == pdFALSE )
{
tskTCB *pxTCB;
taskENTER_CRITICAL();
{
pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( ( ( xList * ) &xTasksWaitingTermination ) );
vListRemove( &( pxTCB->xGenericListItem ) );
--uxCurrentNumberOfTasks;
--uxTasksDeleted;
}
taskEXIT_CRITICAL();
prvDeleteTCB( pxTCB );
}
}
}
#endif
}
static void prvDeleteTCB( tskTCB *pxTCB )
{
vPortFreeAligned( pxTCB->pxStack );
vPortFree( pxTCB );
}
- FreeRTOS 源码注释(prvCheckTasksWaitingTermination)
- FreeRTOS 源码注释(xTaskGenericCreate)
- FreeRTOS 源码注释(vTaskDelete)
- FreeRTOS 源码注释(vTaskDelayUntil)
- FreeRTOS 源码注释(vTaskDelay)
- FreeRTOS 源码注释(vTaskSuspend)
- FreeRTOS 源码注释(prvAllocateTCBAndStack)
- FreeRTOS 源码注释(prvInitialiseTCBVariables)
- FreeRTOS 源码注释(prvInitialiseTaskLists)
- FreeRTOS 源码注释(prvAddTaskToReadyQueue)
- FreeRTOS 源码注释(prvIdleTask)
- FreeRTOS源码解析 -> vTaskResume()
- FreeRTOS 源码分析
- FreeRTOS源码解析 -> xTaskCreate()
- FreeRTOS源码解析 -> vTaskDelete()
- FreeRTOS源码解析 -> vTaskDelayUntil()
- FreeRTOS源码解析 -> vTaskSuspend
- FreeRTOS源码解析 -> vTaskStartScheduler()
- git实验之代码撤消与回退
- JavaScript实现弹出“确定/取消”对话框的方法
- FreeRTOS 源码注释(prvInitialiseTaskLists)
- Json转换利器Gson之实例二-Gson注解和GsonBuilder
- FreeRTOS 源码注释(prvAddTaskToReadyQueue)
- FreeRTOS 源码注释(prvCheckTasksWaitingTermination)
- FreeRTOS 源码注释(prvIdleTask)
- android 开发 @override 编译错误 解决办法
- Win32Asm小程序案例之显示行号的记事本
- android写联系人信息的方法
- 接触一点amd64
- git实验之应用标签
- Android Bitmap 位图相关
- DAI:Digital Audio Interfaces(音频设备的硬件接口)