Updates to sel4runtime from seL4 10.1.x to 11.0.x
- Created
sel4runtime
project to be a runtime for running a C or C-compatible process, i.e. one with a C-like main, in a minimal seL4 environment.
- Added seL4 roottask runtime entry points for: AARCH32, AARCH64, IA32, x86_64, RISC-V 32-bit and RISC-V 64-bit with supporting documentation for calling conventions.
- Added regular runtime entry points for non-roottask new processes for the above architectures.
- Added CMake rules for replacing musllibc’s CRT files with a CMake object library.
- Added CMake configuration option,
Sel4RuntimeRootStack
, for setting Roottask’s initial stack size.
- Create runtime datastructure containing:
- process name likely read from
argv[0]
.
- AUX vector with additional seL4 specific AUX values:
AT_SEL4_BOOT_INFO
: seL4_BootInfo
pointer in current vspace.
AT_SEL4_IPC_BUFFER_PTR
: IPC buffer pointer in current vspace of initial thread.
AT_SEL4_TCB
: TCP capability seL4_CPtr
to initial thread’s TCB object.
- Environment vector.
- Bootinfo pointer to be initialized with bootinfo address from AUX vector.
- ELF headers to be initialized with info from AUX vectors.
- Initial thread information:
- Thread local storage image information.
- Cap to TCB if given in AUX vectors.
- IPC buffer: if given in AUX vectors.
- Add support for calling constructors and destructors.
- Add support for managing threads’ static TLS regions.
- set a global
__sysinfo
pointer if AT_SYSINFO
is set in AUX vector.
- Call
main()
with required argc
and argv
arguments.
- Support for setting TLS variables of threads remotely.
- Call
seL4_DebugNameThread
if the runtime has a process name and the initial thread has a TCB cap
and IPC buffer set.
- Add
Findsel4runtime.cmake
module for importing as CMake module.