package mirage
The MirageOS library operating system
Install
Dune Dependency
Authors
Maintainers
Sources
mirage-4.9.0.tbz
sha256=0c07d59eb52dc3d1506eb4121c4953104a12df79d08a0f0923c9b71e7474a026
sha512=666bf9ee20c9f9de058441f252f4f40ceec6a9ffd00e5cd3b7bfa9532fd65000aeb8a83f9e55586be98d0a86ea72f2dda94e924608135e3d63441359505de58a
doc/src/mirage.devices/key.ml.html
Source file key.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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
(* * 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. *) module Action = Functoria.Action module Key = Functoria.Key open Astring open Cmdliner (** {2 Documentation helper} *) let mirage_section = "MIRAGE PARAMETERS" let unikernel_section = "UNIKERNEL PARAMETERS" let pp_group = Fmt.(option ~none:(any "the unikernel") @@ fmt "the %s group") (** {2 Special keys} *) (** {3 Mode} *) type mode_unix = [ `Unix | `MacOSX ] type mode_xen = [ `Xen | `Qubes ] type mode_solo5 = [ `Hvt | `Spt | `Virtio | `Muen | `Genode ] type mode = [ mode_unix | mode_xen | mode_solo5 ] let (target_conv : mode Cmdliner.Arg.conv), target_doc_alts = let enum = [ ("unix", `Unix); ("macosx", `MacOSX); ("xen", `Xen); ("virtio", `Virtio); ("hvt", `Hvt); ("muen", `Muen); ("qubes", `Qubes); ("genode", `Genode); ("spt", `Spt); ] in let parser, printer = Cmdliner.Arg.enum enum in ((parser, printer), Cmdliner.Arg.doc_alts_enum enum) let pp_target fmt m = snd target_conv fmt m let default_target = match Sys.getenv "MIRAGE_DEFAULT_TARGET" with | "unix" -> `Unix | s -> Fmt.failwith "invalid default target: %S" s | exception Not_found -> ( match Action.run @@ Action.run_cmd_out Bos.Cmd.(v "uname" % "-s") with | Ok "Darwin" -> `MacOSX | _ -> `Unix) let target = let doc = Fmt.str "Target platform to compile the unikernel for. Valid values are: %s" target_doc_alts in let doc = Arg.info ~docs:mirage_section ~docv:"TARGET" ~doc [ "t"; "target" ] ~env:(Cmd.Env.info "MODE") in let key = Key.Arg.opt target_conv default_target doc in Key.create "target" key let is_unix = Key.match_ Key.(value target) @@ function | #mode_unix -> true | #mode_xen | #mode_solo5 -> false let is_solo5 = Key.match_ Key.(value target) @@ function | #mode_solo5 -> true | #mode_xen | #mode_unix -> false let is_xen = Key.match_ Key.(value target) @@ function | #mode_xen -> true | #mode_solo5 | #mode_unix -> false (** {2 General mirage keys} *) let configure_key ?(group = "") ~doc ~default conv name = let prefix = if group = "" then group else group ^ "-" in let doc = Arg.info ~docs:unikernel_section ~docv:(String.Ascii.uppercase name) ~doc [ prefix ^ name ] in let key = Key.Arg.opt conv default doc in Key.create (prefix ^ name) key (** {3 File system keys} *) let kv_ro ?group () = let enum = [ ("crunch", `Crunch); ("direct", `Direct) ] in let conv = Cmdliner.Arg.enum enum in let doc = Fmt.str "Use %s pass-through implementation for %a." (Cmdliner.Arg.doc_alts_enum enum) pp_group group in configure_key ~doc ?group ~default:`Crunch conv "kv_ro" (** {3 Block device keys} *) let block ?group () = let enum = [ ("xenstore", `XenstoreId); ("file", `BlockFile); ("ramdisk", `Ramdisk) ] in let conv = Arg.enum enum in let doc = Fmt.str "Use %s pass-through implementation for %a." (Cmdliner.Arg.doc_alts_enum enum) pp_group group in configure_key ~doc ?group ~default:`Ramdisk conv "block" (** {3 Stack keys} *) let dhcp ?group () = let doc = Fmt.str "Enable dhcp for %a." pp_group group in configure_key ~doc ?group ~default:false Arg.bool "dhcp" let net ?group () : [ `Host | `OCaml ] option Key.key = let enum = [ ("host", `Host); ("socket", `Host); ("direct", `OCaml); ("ocaml", `OCaml); ] in let conv = Cmdliner.Arg.enum enum in let doc = Fmt.str "Use %s group for %a." (Cmdliner.Arg.doc_alts_enum enum) pp_group group in configure_key ~doc ?group ~default:None (Arg.some conv) "net" include Key
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>