        -
,   ,      
 .  cpu_rq (processor)    -
 ,   ,   . 
 this_rq ()    ,    -
.  ,  task_rq (task)    ,  
  .

       ,  
 (     8, "  -
   ").       -
 ,       -
  (,    ,     ).
       
   ,  ,  , -
       .   
,     ,   -
  .      task_rq_lock () 
task_rq_unlock (),   .

struct runqueue *rq;

unsigned long flags;

rq = task rq_lock(task, Sflags);

/*        */
task rq unlock(rq, Sflags);

    this_rq lock(),  -
    ,   rq__unlock (struct
runqueue *rq),      .

    ,   -
  ,         
,          (  8,
"     ",   ).
,   ,  .

/*  ,   ... */
if (rql < rq2) (

spin_lock(&rql->lock) ;

spin lock(&rq2->lock);

} else {

spin lock(&rq2->lock);

spin_lock(&rql->lock) ;

/*      ... */

/*  ,   ... */
spin_unlock(&rql->lock) ;

spin unlock(&rq2->lock);

   73