`sig
type 'pref t
type pref = [ `NoPref | `Readers | `Writers ]
type 'pref kind
val r_pref : [ `Readers ] Rw_mutex.kind
val w_pref : [ `Writers ] Rw_mutex.kind
val np_pref : [ `NoPref ] Rw_mutex.kind
val create : 'pref Rw_mutex.kind -> 'pref Rw_mutex.t
val r_lock : [< Rw_mutex.pref ] Rw_mutex.t -> unit
val r_unlock : [< Rw_mutex.pref ] Rw_mutex.t -> unit
val w_lock : [< Rw_mutex.pref ] Rw_mutex.t -> unit
val w_unlock : [< Rw_mutex.pref ] Rw_mutex.t -> unit
val try_r_lock : [< Rw_mutex.pref ] Rw_mutex.t -> bool
val try_w_lock : [< Rw_mutex.pref ] Rw_mutex.t -> bool
val wrap_r_lock : [< Rw_mutex.pref ] Rw_mutex.t -> (unit -> 'a) -> 'a
val try_wrap_r_lock :
[< Rw_mutex.pref ] Rw_mutex.t -> (unit -> 'a) -> 'a option
val btry_wrap_r_lock :
[< Rw_mutex.pref ] Rw_mutex.t -> (unit -> unit) -> bool
val wrap_w_lock : [< Rw_mutex.pref ] Rw_mutex.t -> (unit -> 'a) -> 'a
val try_wrap_w_lock :
[< Rw_mutex.pref ] Rw_mutex.t -> (unit -> 'a) -> 'a option
val btry_wrap_w_lock :
[< Rw_mutex.pref ] Rw_mutex.t -> (unit -> unit) -> bool
end`