package mirage-runtime
The base MirageOS runtime library, part of every MirageOS unikernel
Install
Dune Dependency
Authors
Maintainers
Sources
mirage-4.9.0.tbz
sha256=0c07d59eb52dc3d1506eb4121c4953104a12df79d08a0f0923c9b71e7474a026
sha512=666bf9ee20c9f9de058441f252f4f40ceec6a9ffd00e5cd3b7bfa9532fd65000aeb8a83f9e55586be98d0a86ea72f2dda94e924608135e3d63441359505de58a
doc/src/mirage-runtime.functoria/functoria_runtime.ml.html
Source file functoria_runtime.ml
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
(* * Copyright (c) 2015 Gabriel Radanne <drupyog@zoho.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) let runtime_args_r = ref [] let runtime_args () = !runtime_args_r module Arg = struct type 'a t = { arg : 'a Cmdliner.Term.t; mutable value : 'a option } let create arg = { arg; value = None } let get t = match t.value with | None -> invalid_arg "Called too early. Please delay this call to after the start \ function of the unikernel." | Some v -> v let term (type a) (t : a t) = let set w = t.value <- Some w in Cmdliner.Term.(const set $ t.arg) end let initialized = ref false let register_arg t = if !initialized then invalid_arg "The function register_arg was called to late. Please call register_arg \ before the start function is executed (e.g. in a top-level binding)."; let u = Arg.create t in runtime_args_r := Arg.term u :: !runtime_args_r; fun () -> Arg.get u let register = register_arg let help_version = 63 let argument_error = 64 let with_argv ?sections keys s argv = let open Cmdliner in if !initialized then () else let gather k rest = Term.(const (fun () () -> ()) $ k $ rest) in let t = List.fold_right gather keys (Term.const ()) in let exits = [ Cmd.Exit.info ~doc:"on success." Cmd.Exit.ok; Cmd.Exit.info ~doc:"on Solo5 internal error." 1; Cmd.Exit.info ~doc:"on showing this help." help_version; Cmd.Exit.info ~doc:"on any argument parsing error." argument_error; Cmd.Exit.info ~doc: "on unexpected internal errors (bugs) while processing the boot \ parameters." Cmd.Exit.internal_error; Cmd.Exit.info ~doc:"on OCaml uncaught exception." 255; ] in let man = Option.map (List.map (fun s -> `S s)) sections in match Cmd.(eval_value ~argv (Cmd.v (info ?man ~exits s) t)) with | Ok (`Ok _) -> initialized := true; () | Error `Parse -> exit argument_error | Error `Term -> print_endline "Hint: To pass a space, it needs to be escaped twice: \ \027[1m--hello='Hello,\\ world!'\027[m"; print_endline " Another possibility is: \027[1m--hello='\"Hello, \ world!\"'\027[m"; exit argument_error | Error `Exn -> exit Cmd.Exit.internal_error | Ok `Help | Ok `Version -> exit help_version
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>