dequeue_task()

将进程p从优先级数组array(优先级数组array的某个元素[array->queue + p->prio]所代表的优先级队列) 中删除;查看[array->queue + p->prio]所代表的优先级队列中是否还有活跃进程,如果没有将要清除优先级位图bitmap[]
static   void  dequeue_task( struct  task_struct  * p, prio_array_t  * array)
{
    array
->nr_active--;
    list_del(
&p->run_list);
    
if (list_empty(array->queue + p->prio))
        __clear_bit(p
->prio, array->bitmap);
}

array->bitmap    代表优先级位图bitmap[]数组的首地址

判断head索引的双链表是否为空,为空返回true,否则返回false
static  inline  int  list_empty( const   struct  list_head  * head)
{
    
return head->next == head;
}



static  inline  void  __clear_bit( int  nr,  volatile  unsigned  long   *  addr)
{
    __asm__ __volatile__(
        
"btrl %1,%0"
        :
"=m" (ADDR)
        :
"Ir" (nr));
}
















 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值