xous-core/services/pddb
bunnie 8b5ad2657b an aborted attempt at doing a clean-shutdown for hosted mode
This doesn't work because the shutdown call destroys all the servers then terminates
the processes. But, the problem is that the processes are still
running, but servers are disappearing. So what you end up with is a
panic when the first message gets delivered to a server that no longer
exists, and then you end up with the program hanging on that panic
because some servers haven't been destroyed/exited yet and are now
just spinning waiting to be scheduled. so the call works in the tidy
kernel test cases but to get it to work on a full OS you'd need to
have a way to put every server into an eternal blocking state before
making the shutdown call (to prevent new messages from being issued
while servers are going away), which is more work than i'm willing to
put into the problem right now.
2022-03-31 01:10:58 +08:00
..
locales change en-audio to en-tts 2022-03-10 15:38:55 +08:00
src an aborted attempt at doing a clean-shutdown for hosted mode 2022-03-31 01:10:58 +08:00
Cargo.toml lay in another layer of tts functionality 2022-03-11 02:37:48 +08:00
README.md Edit minor typos 2022-02-14 19:39:12 -05:00

PDDB

Documentation for the PDDB can be found in the headers of the source files:

  • main.rs contains a glossary, project overview, threat model, auditor's notes, and goals.
  • basis.rs gives details on how the data is organized in the Basis memory space, and contains most of the code for manipulating dictionary entries stored within the basis cache.
  • dictionary.rs will contain most of the code for manipulating the keys stored in a dictionary cache entry.
  • keys.rs documents the key cache format and on-disk metadata and data formats.
  • pagetable.rs documents the page table format.
  • hw.rs contains all the glue to the SPINOR layer, TRNG, and system time, as well as low-level routines for formatting the disk.
  • fastspace.rs contains the Fast Free Space optimization, which is a partial record of known free space in the PDDB. The very nature of plausible deniability requires this quirky structure, as "free space" is the side channel for leaking information about the existence, or lack of existence, of certain data.

Why is your RustDoc so Shitty?

Unfortunately, rustdoc can't document binaries, and so the only documentation you'll see generated are for the "frontend" library portions, which are the API calls you would use to talk to the PDDB. These are deliberately uninteresting, as we've gone through great effort to make the bindings are "what you expect" (principle of least surprise).

However, you're probably looking to fix a PDDB bug, audit the code, or generally figure out what the hell is going on. This means you want to look at the PDDB as a "binary" and not a "library" -- something RustDoc can't help you with. As the issue above notes, the fallback is for you to consult this README file, and literally, read the source (or rather, the paragraphs of plaintext documentation we've embedded in the source files, waiting for the day when the rustdoc issue is fixed and these can be turned into something more user-friendly).