您的位置:首页 > 其它

FreeRTOS 源码注释(vTaskSuspend)

2012-06-22 21:10 197 查看
void vTaskSuspend( xTaskHandle pxTaskToSuspend )

{

tskTCB *pxTCB;

taskENTER_CRITICAL();

{

if( pxTaskToSuspend == pxCurrentTCB )

{

pxTaskToSuspend = NULL;

}

pxTCB = prvGetTCBFromHandle( pxTaskToSuspend );

/* 从就绪链表中删除 */

vListRemove( &( pxTCB->xGenericListItem ) );

if( pxTCB->xEventListItem.pvContainer )

{

vListRemove( &( pxTCB->xEventListItem ) );/* 从事件链表中删除 */

}

vListInsertEnd( ( xList * ) &xSuspendedTaskList, &( pxTCB->xGenericListItem ) );/* 插入到 Suspended 链表 */

}

taskEXIT_CRITICAL();

if( ( void * ) pxTaskToSuspend == NULL ) /*说明停止的是当前任务,需要任务调度 */

{

portYIELD_WITHIN_API(); /* 任务调度 */

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: