Sam Leffler b9e209b008 Overhaul ProcessManager support.
- Split support into three levels:
  o kata_proc_manager::process_manager is a single-threaded implementation
    of ProcessManagerInterface and PackageManagerInterface that uses an
    abstract manager interface to carry out low-level work (used mainly
    to inject fakes for unit testing).
  o kata_proc_manager is a thread-safe wrapper around process_manager that
    has the manager interfaces bound to KataOS; this is the level at which
    we integrate with external components.
  o kata_proc_component is the top-level glue code for the ProcessManager
    camkes component; it has a pre_init function to setup rust support
    (logger, allocator, etc), a run function for the component's control
    block, and wrapper functions for the camkes ProcessControl and
    PackageManagement interfaces.
- Add install, uninstall, start, stop, and bundles shell commands for
  exercising ProcessControlInterface & PackageManagementInterface.

Specifics:
- Bundle id's are now treated internally as SmallString's with &str
  used for passing bundle id's through api's. The BundleId type is
  temporarily used for get_running_bundles() to return information (but
  see below about RawBundleIdData).
- ArrayVec's are replaced with a hashbrown::HashMap
- Bundle objects are Box'd instead of holding refs (now that we have an
  allocator); this eliminates lifetime constraints.
- The manager interface is Box'd to eliminate lifetime constraints.
- Purge ProcessManager::empty(), it's infeasible with the hashmap and
  is not needed with kata_proc_manager support for static decls.
- Add RawBundleIdData support for serialize+deserialize of BundleIdArray;
  no more leaking internal data types to client code.
- Remove bounds check on #bundles recorded; set a nominal capacity
  and fallback to dynamic allocation of the hashmap.
- Manually update ProcessManagerBindings.h (using cbindgen).

Change-Id: I08deaecc997ea96cb794808036540bedd58b3fa4
GitOrigin-RevId: 6e0826940b43b1295d39769b57812a9494b5a4cb
2022-10-06 17:59:52 +00:00

Kata OS

This is a CAmkES project that assembles the entire Kata OS. It exists outside the seL4 source trees, since it contains code not intended to go to upstream seL4.

This uses the standard CAmkES build system by symlinking CMakeLists.txt. It also symlinks settings.cmake, and so retains the notion of "apps," which enables the build system to switch which assembly it builds using the CAMKES_APP CMake cache value. Kata OS just has one app, system.

Description
No description provided
Readme Apache-2.0 1.2 MiB
Languages
Rust 67.6%
Python 27.9%
C 2.1%
Makefile 1.6%
CMake 0.6%
Other 0.2%