1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
type t = C.Types.Once.t Ctypes.ptr
let init () =
let guard = Ctypes.addr (Ctypes.make C.Types.Once.t) in
C.Functions.Once.init guard
|> Error.to_result guard
let trampoline =
C.Functions.Once.get_trampoline ()
external set_callback : (unit -> unit) -> unit = "luv_set_once_callback"
let once guard f =
set_callback f;
C.Functions.Once.once guard trampoline
let once_c guard f =
C.Functions.Once.once guard (Ctypes.funptr_of_raw_address f)