#if ( INCLUDE_vTaskSuspend == 1 )
void vTaskResume( xTaskHandle pxTaskToResume )
{
tskTCB *pxTCB;
/* It does not make sense to resume the calling task. */
configASSERT( pxTaskToResume );
/* Remove the task from whichever list it is currently in, and place
it in the ready list. */
pxTCB = ( tskTCB * ) pxTaskToResume;
/* The parameter cannot be NULL as it is impossible to resume the
currently executing task. */
//要恢复的task不为空并且不是当前正在运行的task(如果是当前运行的还恢复个毛线)
//熟悉的链表操作啊
if( ( pxTCB != NULL ) && ( pxTCB != pxCurrentTCB ) )
{
//进入临界区
taskENTER_CRITICAL();
{
//判断要恢复的task是否在挂起列表中
if( xTaskIsTaskSuspended( pxTCB ) == pdTRUE )
{
traceTASK_RESUME( pxTCB );
/* As we are in a critical section we can access the ready
lists even if the scheduler is suspended. */
//从挂起链表中删除,加入到ready队列中(恢复到就绪态)
v