1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
type t = C.Types.Mutex.t Ctypes.ptr
let init ?(recursive = false) () =
let mutex = Ctypes.addr (Ctypes.make C.Types.Mutex.t) in
let result =
if recursive then
C.Functions.Mutex.init_recursive mutex
else
C.Functions.Mutex.init mutex
in
Error.to_result mutex result
let destroy =
C.Functions.Mutex.destroy
let lock =
C.Blocking.Mutex.lock
let trylock mutex =
C.Functions.Mutex.trylock mutex
|> Error.to_result ()
let unlock =
C.Functions.Mutex.unlock