 -

,     -,    -.
,      - -
       - -.

 -     struct rw_
semaphore,     <asm/rwsem.h>.  
 -      

static DECLARE_RWSEM(name);

 name     .

 -,   ,   -
    .

init_rwsem(struct rw_semaphore *sem)

  -   (mutex), .. 
   .     
   ,       
.  ,       , -
  ,      .   -
   ,    
  down ().   .

static DECLARE_RWSEM(mr_rwsem);

/*      */
down read(&mr rwsem);

/*   ( ) .,. */

/*   */
up_read(&mr_rwsem) ;

/* ... */

/*      */
down write(&mr rwsem);

/*   */

/*   (  ) ... */

up write(&mr rwsem);

     down_read_trylock ()  down_write_
trylock ().          -
-.     ,   -
 ,  ,      . 
        -
    ,      !

 -   ,    
- -.   downgrade_writer (),  -


    195