package mirage-runtime
The base MirageOS runtime library, part of every MirageOS unikernel
Install
dune-project
Dependency
Authors
Maintainers
Sources
mirage-4.10.0.tbz
sha256=795cc176ffbc67363d4c4ef69354aced9681c0b1e24bf93f0a270975ee0b608b
sha512=96a2fb3971613b146371a02af1ce59c73ca86dd1f42c0c47334bfbabe7d5f4cffb080c2c585e2e21fe3d33133bbe86b703cb9d276dd86ce3a90a544f03293af5
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)"
>