Skip to content

Latest commit

 

History

History
32 lines (21 loc) · 2.03 KB

docs_index.md

File metadata and controls

32 lines (21 loc) · 2.03 KB

Code organisation

CheriOS has most of its non-system programs in its root directory. The nanokernel and boot code are in the boot directory. All OS related programs are in the cherios directory. The following are important:

  • boot: boot code. ALSO still contains the init program. If you want to disable/enable programs being loaded during init, see the list in /boot/src/init/init.c

  • boot/nanokernel: nanokernel code. Provides reservations, foundations, CPU contexts, and wraps access to the architecture for the kernel.

  • cherios/kernel: microkernel. Handles exceptions/interrupts, scheduling, and message-passing between activations.

  • cherios/core/namespace: provides a directory of registered activations (see /include/namespace.h)

  • cherios/core/memmgt: provides the system-wide memory map (see /include/sys.mman.h)

  • cherios/system/type_manager: Handles allocations of sealing capabilities. Manages 'Type Ownership Principles' (TOPs), in the same way the memory manager has MOPs.

  • cherios/core/proc_manager: provides the process model for c/c++ programs (see include/thread.h)

  • cherios/system/fatfs: simple FAT filesystem module (see use include/cheristd.h for wrappers)

  • cherios/system/lwip: Web stack (see include/net.h for wrappers)

  • cherios/system/libsocket: The socket library. Most processes link against this as a dynamic library for their sockets.

  • cherios/system/dylink: The dynamic linker. CheriOS dynamic linking works by dynamic libraries statically building in a dynamic-linking server.

  • libuser: all modules are linked against it. Provides several libc functions as well as cherios-related functions.

  • libuser/src/capmalloc/capmalloc_slabs.cpp The latest malloc implementation for CheriOS.

Demos

Alice Bob

There is a simple two party messaging demo that demonstrates how to use nanokernel primitives for secure messaging between two processes.