|
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;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|