29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# Application Programming Interface
|
|
|
|
## Overview
|
|
|
|
The Gila microkernel has a very limited API surface, but several components
|
|
developed alongside it expose additional functionality- such as `libgila` and
|
|
Userboot, which are treated as extensions of the kernel.
|
|
|
|
## The libgila Library
|
|
|
|
The `libgila` library is shared between the kernel and any binaries built for
|
|
it, serving to abstract the syscall API and any structures or protocols that
|
|
pass the kernel-mode boundary. It provides the official kernel API, and its
|
|
version number is incremented independent of the kernel's.
|
|
|
|
## Userboot
|
|
|
|
Userboot is an early-boot program which is launched as the first unprivileged
|
|
process by Gila. The kernel will pass several pieces of data to it, such as the
|
|
addresses of device tree blobs, framebuffers, and ACPI tables. These addresses
|
|
will not necessarily be mapped to memory. What the kernel *will* map is the
|
|
page range containing the initramfs, which Userboot is responsible for
|
|
decompressing and parsing. If the initramfs's structure & manifest file do not
|
|
match the specification denoted here, Userboot will fail to complete the boot
|
|
process.
|
|
|
|
## Initramfs Structure
|
|
|