   double_rq_lock ()  double_rq_unlock () 
   .    .

double rq lock(rql, rq2);

/*      ... */
double_rq_unlock(rql, rq2);

  ,  ,    -
 .       8, "
    "  9, "   ". 
     :   
       . -  
       -
.      ,   -
  .  ,    ,  ,
        .     
  ,    (      -
),      ,      
  .    (, spinning),   
     ,  ,  -
  .  ,  ,      -
   ,   ,      -
     ,    . ,
       ,    
     .    
   ,     .   
    ,        -
.       .      
  ,      
  ,       ,   
 ,    .   
       ,   
  .   8  9    .

 

       (priority arrays): -
  .      kernel / sched . 
   struct prio_array.     -
,   0(1^.    -
       ,   -
.        (priority bitmap),
       ,  
     .

struct prio array {

int nr_active;                   /*   */
unsigned long bitmap[BITMAP_SIZE]; /*    */
struct list_head queue[MAX_PRIO];/*   */

74  4