From 9107cb1553500edda175ed1dc9cdd0b4200f2439 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Tue, 9 Jul 2024 12:34:35 -0700 Subject: [PATCH] add more information in README --- README.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f09152a..5983fa2 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,32 @@ aarch64. Install the following: * [Kraftkit](https://unikraft.org/docs/cli/install) Then run `zig build run` and everything will compile and run. The zig source -code is all in the `ziggy` directory +code is all in the `ziggy` directory. This is all prototype level code at this +point. +undefined.c +----------- +This file aims to fill in all the undefined symbols that are referenced when +a zig project links libC (necessary for unikraft kernel development). However, +this is very incomplete. The `.config.hellowworld_qemu-x86_64` file, usually +managed by the invocation of the TUI started by `kraft menu`, will add/remove +features that result in various libc symbols being implemented. A few +`#ifdef` statements exist currently, but even the few that are in there aren't +quite right...this file is mostly a "hack around until it works" effort. + +Knowing that this is an initial effort, care was put into making sure that +when a symbol is actually **used** at runtime, the unikernel will crash after +posting a message indicating the specific function call that was involved. This +is designed to either a) correct the configuration using `kraft menu` or +b) provide an implementation directly in `undefined.c`. In some cases, I prefer +the implementation in `undefined.c`, most specifically the `write` function, +which will output stderr messages in red. Notes ----- + The build script basically runs these commands: ```sh