requeue_task()

将进程p从优先级数组array(优先级数组array的某个元素[array->queue + p->prio]所代表的优先级队列) 中删除,并将其插入该队列的尾部
static   void  requeue_task( struct  task_struct  * p, prio_array_t  * array)
{
    list_move_tail(
&p->run_list, array->queue + p->prio);
}

task_struct.run_list    指向该进程所在执行队列runqueue的前一个元素和下一个元素


将list从所在队列中删除,然后将其插入原队列尾部
static  inline  void  list_move_tail( struct  list_head  * list,
                  
struct  list_head  * head)
{
        __list_del(list
->prev, list->next);
        list_add_tail(list, head);
}
 
注:  此处__list_del()把*list从起所在双向链表中删除后,之所以可以不将list->prev和list-next置为NULL,是因为下面list_add_tail()将重新为这两个指针赋值。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值