将进程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()将重新为这两个指针赋值。




task_struct.run_list 指向该进程所在执行队列runqueue的前一个元素和下一个元素
将list从所在队列中删除,然后将其插入原队列尾部





