sig
type t = Nano_mutex.t
val invariant : t -> unit
val create : unit -> t
val equal : t -> t -> bool
val current_thread_has_lock : t -> bool
val lock : t -> unit Or_error.t
val lock_exn : t -> unit
val try_lock : t -> [ `Acquired | `Not_acquired ] Or_error.t
val try_lock_exn : t -> [ `Acquired | `Not_acquired ]
val unlock : t -> unit Or_error.t
val unlock_exn : t -> unit
val critical_section : t -> f:(unit -> 'a) -> 'a
val sexp_of_t : t -> Sexplib.Sexp.t
val ounit_tests : unit -> OUnit.test
end