cryostat_genesis.kv 1 ------------------------------------------------------------------------------
cryostat_genesis.kv 2 ------------------------------------------------------------------------------
cryostat_genesis.kv 3 -- This file is part of 'Cryostat', an Ada library for persistent storage. --
cryostat_genesis.kv 4 -- --
cryostat_genesis.kv 5 -- (C) 2020 Stanislav Datskovskiy ( www.loper-os.org ) --
cryostat_genesis.kv 6 -- http://wot.deedbot.org/17215D118B7239507FAFED98B98228A001ABFFC7.html --
cryostat_genesis.kv 7 -- --
cryostat_genesis.kv 8 -- You do not have, nor can you ever acquire the right to use, copy or --
cryostat_genesis.kv 9 -- distribute this software ; Should you use this software for any purpose, --
cryostat_genesis.kv 10 -- or copy and distribute it to anyone or in any manner, you are breaking --
cryostat_genesis.kv 11 -- the laws of whatever soi-disant jurisdiction, and you promise to --
cryostat_genesis.kv 12 -- continue doing so for the indefinite future. In any case, please --
cryostat_genesis.kv 13 -- always : read and understand any software ; verify any PGP signatures --
cryostat_genesis.kv 14 -- that you use - for any purpose. --
cryostat_genesis.kv 15 ------------------------------------------------------------------------------
cryostat_genesis.kv 16 ------------------------------------------------------------------------------
cryostat_genesis.kv 17
cryostat_genesis.kv 18 ------------------------------------------------------------------------------
cryostat_genesis.kv 19 "Cryostat" is a Fits-in-Head minimal library for adding persistent storage to
cryostat_genesis.kv 20 Ada data structures. It uses the MMap() system call, present in Linux (kernel
cryostat_genesis.kv 21 2.4 and newer) and all compatible operating systems.
cryostat_genesis.kv 22
cryostat_genesis.kv 23 Cryostat does NOT require enabling the use of pointerism, the secondary stack,
cryostat_genesis.kv 24 heap, or other bulky and objectionable GNAT features, in the calling program.
cryostat_genesis.kv 25 It does however require "finalization" to be enabled. This is used to
cryostat_genesis.kv 26 guarantee the safe sync-to-disk and closing of the backing MMap when the
cryostat_genesis.kv 27 data structure it contains goes out of scope.
cryostat_genesis.kv 28
cryostat_genesis.kv 29 See introductory article : http://www.loper-os.org/?p=3791
cryostat_genesis.kv 30 ------------------------------------------------------------------------------
cryostat_genesis.kv 31
cryostat_genesis.kv 32 ------------------------------------------------------------------------------
cryostat_genesis.kv 33 BUILD, TEST :
cryostat_genesis.kv 34 ------------------------------------------------------------------------------
cryostat_genesis.kv 35
cryostat_genesis.kv 36 cd demo
cryostat_genesis.kv 37 gprbuild
cryostat_genesis.kv 38 ./bin/cryodemo
cryostat_genesis.kv 39
cryostat_genesis.kv 40 Will produce this output :
cryostat_genesis.kv 41
cryostat_genesis.kv 42 T(0) before : 0
cryostat_genesis.kv 43 T(Last) before : 0
cryostat_genesis.kv 44 T(0) after : 1
cryostat_genesis.kv 45 T(Last) after : 1
cryostat_genesis.kv 46 OK.
cryostat_genesis.kv 47
cryostat_genesis.kv 48 On a second invocation :
cryostat_genesis.kv 49
cryostat_genesis.kv 50 T(0) before : 1
cryostat_genesis.kv 51 T(Last) before : 1
cryostat_genesis.kv 52 T(0) after : 2
cryostat_genesis.kv 53 T(Last) after : 2
cryostat_genesis.kv 54 OK.
cryostat_genesis.kv 55
cryostat_genesis.kv 56 ... on the N-th invocation :
cryostat_genesis.kv 57
cryostat_genesis.kv 58 T(0) before : N-1
cryostat_genesis.kv 59 T(Last) before : N-1
cryostat_genesis.kv 60 T(0) after : N
cryostat_genesis.kv 61 T(Last) after : N
cryostat_genesis.kv 62 OK.
cryostat_genesis.kv 63
cryostat_genesis.kv 64 "cryotest.bin", the demo backing file, will consist of 512 megabytes of
cryostat_genesis.kv 65 byte value N, where N is the number of times the demo has executed.
cryostat_genesis.kv 66
cryostat_genesis.kv 67 E.g. after the first execution of "cryodemo" ,
cryostat_genesis.kv 68
cryostat_genesis.kv 69 $ hexdump -C cryotest.bin
cryostat_genesis.kv 70
cryostat_genesis.kv 71 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|
cryostat_genesis.kv 72 *
cryostat_genesis.kv 73 20000000
cryostat_genesis.kv 74
cryostat_genesis.kv 75 ------------------------------------------------------------------------------
cryostat_genesis.kv 76 TODO (as of version 633037) :
cryostat_genesis.kv 77 ------------------------------------------------------------------------------
cryostat_genesis.kv 78
cryostat_genesis.kv 79 1) Add support for offsetted maps, and for maps which do not span the entire
cryostat_genesis.kv 80 length of their backing file; likewise support runtime expansion of the
cryostat_genesis.kv 81 backing file.
cryostat_genesis.kv 82
cryostat_genesis.kv 83 2) Currently, Cryostat is C-free. However, if added a .C for pulling constants
cryostat_genesis.kv 84 from system headers, instead of the hardcoded MMap() flag values
cryostat_genesis.kv 85 currently in unix.ads, could support architectures where non-standard values
cryostat_genesis.kv 86 are used for these; in particular, MIPS32, MIPS64; and possibly others.
cryostat_genesis.kv 87 See also: http://logs.nosuchlabs.com/log/trilema/2018-10-24#1865524
cryostat_genesis.kv 88
cryostat_genesis.kv 89 3) Add support for "anonymous" (i.e. not backed to disk storage) MMap, as a
cryostat_genesis.kv 90 cleaner (when using large data structures) replacement for Ada's standard
cryostat_genesis.kv 91 heap mechanism.
cryostat_genesis.kv 92
cryostat_genesis.kv 93 ------------------------------------------------------------------------------