 9.8.      
                  

lock_kernel ()              BKL
unlock_kernel ()            BKL

kernel_locked ()            ,   ,
     

    ,     ,  
,      .   BKL
   (,  "   foo () "),
    ("  foo ").    ,   BKL
 -  ,    , 
 -  .   ,    
,         
,    .

 

  (seq lock)     ,  -
    2.6.       -
     .    
   .    
 -,      .
        ,  -
 ,     .  -
       .   
 ,          .
       ,       
  (        -
,      ,     -
  ).

      .

seqlock_t mr_seq_lock = SEQLOCK_UNLOCKED;

 ,   ,    .

write seqlock(&mr seq_lock);

/*    ... */
write sequnlock(&mr seq lock);

 ,     -.  
  ,      .

unsigned long seq;

do {

seq = read_seqbegin(&mr_seq lock);

/*     ... */
} while (read seqretry(&mr seq lock, seq));

    199