Nightingale ist ein Betriebssystem für x86_64, das ich seit 7 Jahren entwickelt habe, um etwas über Programmierung und Betriebssystemdesign auf niedrigem Niveau zu erfahren.
Nightingale implementiert ein meist posix-ähnliches Userland, obwohl die Konformität kein Ziel ist. Ich sehe POSIX so nützlich wie eine gut verstandene und dokumentierte Schnittstelle und eine, die die Kompatibilität mit großen Mengen vorhandener Software ermöglicht.

Weitere spezifische Funktionen für Funktionen und Funktionen finden Sie unter.md.
Nightingale verwendet das CMake -Build -System und finden Sie Paketanforderungen in den GitHub -Aktionen Workflow -Dateien.
make ../run.rb - Der Hilfegtext zeigt die verfügbaren Optionen an doc : Dokumentationinclude : Header -Dateien für das gesamte System eininterface : Schnittstellendefinitionen für Syscalls und Errno -Wertekernel : Der Kern des Betriebssystemslibc : Gemeinsame Userland Routinen, einschließlich Dings wie printflinker : Kernel -Modulloader, Dynamic Linker und libelf userlandscript : Utility -Skripte zum Aufbau und Entwickeln von Nightingaletoolchain : CMake Toolchain -Dateienuser : In-Tree-Usmode-Programme, die mit dem System verteilt sindbt.bash : Convenience -Wrapper um addr2line für Backcracingsdump.bash : Convenience -Wrapper um objdumpformat.bash : Convenience-Wrapper um clang-formatmake.bash : Core Build Engine für das Projektrun.rb : Convenience-Wrapper um qemu-system-x86_64Diese Manifestdateien definieren die öffentliche Syscall -Schnittstelle des Nightingale -Kernels, sie werden in C -Enums und Metadaten verwendet, die sowohl vom Kernel als auch in der C -Bibliothek verwendet werden.
ERRNOS : Definiert die Werte von errno , ihren Namen und ihren perror -ZeichenfolgenSYSCALLS : Definiert Systemzahlen, Typen und Argumente