This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
5
unikernel/duniverse/mirage-sleep/solo5/dune
Normal file
5
unikernel/duniverse/mirage-sleep/solo5/dune
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
(library
|
||||
(name mirage_sleep_solo5)
|
||||
(public_name mirage-sleep.solo5)
|
||||
(implements mirage-sleep)
|
||||
(optional))
|
||||
18
unikernel/duniverse/mirage-sleep/solo5/mirage_sleep.ml
Normal file
18
unikernel/duniverse/mirage-sleep/solo5/mirage_sleep.ml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
external time : unit -> int64 = "caml_get_monotonic_time"
|
||||
|
||||
type t = { time : int64; mutable canceled : bool; thread : unit Lwt.u }
|
||||
|
||||
let sleepers = ref []
|
||||
|
||||
let ns d =
|
||||
let res, w = Lwt.task () in
|
||||
let time = Int64.add (time ()) d in
|
||||
let sleeper = { time; canceled = false; thread = w } in
|
||||
sleepers := sleeper :: !sleepers;
|
||||
Lwt.on_cancel res (fun _ -> sleeper.canceled <- true);
|
||||
res
|
||||
|
||||
let new_sleepers () =
|
||||
let sl = !sleepers in
|
||||
sleepers := [];
|
||||
sl
|
||||
Loading…
Add table
Add a link
Reference in a new issue