|
rtt线程唤醒函数中有一个从挂起队列中移除操作, / * remove from suspend list */ rt_list_remove(&(thread->tlist));,可是源码中并未找到挂起队列的定义和相关插入挂起队列操作,这里的移除操作有什么意义?
rt_err_t rt_thread_resume(rt_thread_t thread)
{
register rt_base_t temp;
/* thread check */
RT_ASSERT(thread != RT_NULL);
RT_DEBUG_LOG(RT_DEBUG_THREAD, ("thread resume: %s\n", thread->name));
if (thread->stat != RT_THREAD_SUSPEND)//只对处于挂起的线程进行还原操作
{
RT_DEBUG_LOG(RT_DEBUG_THREAD, ("thread resume: thread disorder, %d\n",
thread->stat));
return -RT_ERROR;
}
/* disable interrupt */
temp = rt_hw_interrupt_disable();//关中断
/* remove from suspend list */
rt_list_remove(&(thread->tlist));//从挂起队列中移除
/* remove thread timer */
rt_list_remove(&(thread->thread_timer.list));//因线程即将运行,所以需要移除定时器,无需再定时
/* change timer state */
thread->thread_timer.parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;//将内核对象的标志设置为定时器非激活标志
/* enable interrupt */
rt_hw_interrupt_enable(temp);//开中断
/* insert to schedule ready list */
rt_schedule_insert_thread(thread);//将线程加入调度器
return RT_EOK;
}
|
|