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
open Functoria.DSL
type time = TIME
let time = typ TIME
let default_time =
let unix_time =
impl ~packages:[ package "mirage-time" ] "Unix_os.Time" time
in
let solo5_time =
impl ~packages:[ package "mirage-time" ] "Solo5_os.Time" time
in
let xen_time = impl ~packages:[ package "mirage-time" ] "Xen_os.Time" time in
match_impl
Key.(value target)
[
(`Unix, unix_time);
(`MacOSX, unix_time);
(`Xen, xen_time);
(`Qubes, xen_time);
(`Virtio, solo5_time);
(`Hvt, solo5_time);
(`Spt, solo5_time);
(`Muen, solo5_time);
(`Genode, solo5_time);
]
~default:unix_time