genode/repos/gems/recipes/src
Martin Stein d8a71e5978 tresor: improved module framework and clean-up
* Make command pool a proper module
  * The command pool used to be kind of a module but it was driven via custom
    tresor-tester specific code. Now, it becomes a proper module that
    is driven by the module framework instead.
  * Move the code for creating and handling the module-execution progress flag
    into Module_composition::execute_modules as the function is always used with
    this code surrounding it.

* Reorganize files, remove deprecated files

* A new class Module_channel is introduced in the module framework and all
  channel classes inherit from it. With that class in place, the formerly
  module-specific implementations of the following methods are replaced by
  new generic implementations in the Module framework:

  * ready_to_submit_request
  * submit_request
  * _peek_completed_request
  * _drop_completed_request
  * _peek_generated_request
  * _drop_generated_request
  * generated_request_complete

* Module requests are now held for the duration of their lifetime at the
  module they originate from and not, like before, at their target module. As
  a result, modules can generate new requests inline (without having to wait
  for the target module), making code much simpler to read, reducing the amount
  of channel state, and allowing for non-copyable request types.

* Introduce a sub-state-machine for securing a superblock in the
  superblock_control module in order to reduce redundancy.

* Some modules, like free_tree, were completely re-designed in order to make
  them more readable.

* Replace all conditional exceptions by using the macros in
  tresor/assertion.h .

* Move methods that are used in multiple modules but that were implemented
  redundantly in each module to tresor/types.h.

* Remove verbosity node and all that was related to it from tresor tester
  config as the targeted verbosity can be achieved with the
  VERBOSE_MODULE_COMMUNICATION flag in tresor/verbosity.h .

* Extract the aspect of translating the byte-granular I/O-requests to
  tresor-block requests from the tresor VFS-plugin and move it to a new module
  called splitter.

* Rename the files and interface of the hashing back-end to not reflect the used
  hashing algorithm/config anymore, while at the same time making the hashing
  interface strict regarding the used types.

* Introduce the NONCOPYABLE macro that makes marking a class noncopyable short
  and clear.

* Replace the former tresor/vfs_utilities.h/.cc with a new tresor/file.h
  that contains the classes Read_write_file and Write_only_file. These classes
  significantly simplify the modules crypto, block_io, and trust_anchor by
  moving the details of file access to a sub-state machine.

* The former, rather trivial block allocator module is replaced by a normal
  object of type Pba_allocator that must be provided by the client of the
  Sb_initializer (reference in the Sb_initializer_request).

Ref #5062

tresor: read uninitialized vbas as all zeroes

Virtual addresses in a Tresor container that were not yet written by the user
should always return a data block that is all-zeroes. This was the concept
right from the beginning of the project. However, somehow this aspect either
never got implement or got lost along the way.

Some context for understanding the commit: The Tresor doesn't initialize the
payload data blocks of a container when creating a new container as this would
be rather expensive. Instead, it marks the leaf metadata nodes of the
virtual-block-device tree (those that reference the payload data blocks in
physical address space) with generation 0.

Now, this commit ensures that, whenever the virtual-block-device module reads
such a generation-0 leaf, instead of asking the block_io and crypto to deliver
data from disc, it directly provides the user with 4K of zeroes.

Ref #5062
2024-04-12 15:00:45 +02:00
..
backdrop depot: update recipe hashes 2024-02-29 11:08:28 +01:00
cpu_load_display depot: update recipe hashes 2024-02-29 11:08:28 +01:00
dbg_download gems: add dbg_download 2024-04-12 12:57:28 +02:00
decorator depot: update recipe hashes 2024-02-29 11:08:28 +01:00
depot_deploy depot: update recipe hashes 2024-02-29 11:08:28 +01:00
depot_download_manager depot: update recipe hashes 2024-02-29 11:08:28 +01:00
depot_query depot: update recipe hashes 2024-02-29 11:08:28 +01:00
depot_remove depot: update recipe hashes 2024-02-29 11:08:28 +01:00
driver_manager depot: update recipe hashes 2024-02-29 11:08:28 +01:00
file_terminal depot: update recipe hashes 2024-02-29 11:08:28 +01:00
file_vault depot: update recipe hashes 2024-02-29 11:08:28 +01:00
fs_query depot: update recipe hashes 2024-02-29 11:08:28 +01:00
fs_tool depot: update recipe hashes 2024-02-29 11:08:28 +01:00
gpt_write depot: update recipe hashes 2024-02-29 11:08:28 +01:00
gui_fader depot: update recipe hashes 2024-02-29 11:08:28 +01:00
menu_view depot: update recipe hashes 2024-02-29 11:08:28 +01:00
mixer_gui_qt depot: update recipe hashes 2024-02-29 11:08:28 +01:00
nano3d depot: update recipe hashes 2024-02-29 11:08:28 +01:00
osci depot: update recipe hashes 2024-02-29 11:08:28 +01:00
rom_osci depot: update recipe hashes 2024-02-29 11:08:28 +01:00
screenshot_trigger depot: update recipe hashes 2024-02-29 11:08:28 +01:00
sculpt_manager depot: update recipe hashes 2024-02-29 11:08:28 +01:00
tcp_terminal depot: update recipe hashes 2024-02-29 11:08:28 +01:00
terminal depot: update recipe hashes 2024-02-29 11:08:28 +01:00
test-tiled_wm depot: update recipe hashes 2024-02-29 11:08:28 +01:00
text_area depot: update recipe hashes 2024-02-29 11:08:28 +01:00
themed_decorator depot: update recipe hashes 2024-02-29 11:08:28 +01:00
touch_keyboard depot: update recipe hashes 2024-02-29 11:08:28 +01:00
trace_recorder depot: update recipe hashes 2024-02-29 11:08:28 +01:00
trace_recorder_policy depot: update recipe hashes 2024-02-29 11:08:28 +01:00
tresor tresor: improved module framework and clean-up 2024-04-12 15:00:45 +02:00
vfs_audit depot: update recipe hashes 2024-02-29 11:08:28 +01:00
vfs_gpu depot: update recipe hashes 2024-02-29 11:08:28 +01:00
vfs_import depot: update recipe hashes 2024-02-29 11:08:28 +01:00
vfs_pipe depot: update recipe hashes 2024-02-29 11:08:28 +01:00
vfs_trace depot: update recipe hashes 2024-02-29 11:08:28 +01:00
vfs_ttf depot: update recipe hashes 2024-02-29 11:08:28 +01:00
window_layouter depot: update recipe hashes 2024-02-29 11:08:28 +01:00
wm depot: update recipe hashes 2024-02-29 11:08:28 +01:00