Lyx OS – Syscall-ABI v1.0

Diese Seite dokumentiert die vollständige Syscall-Schnittstelle von Lyx OS. Sie richtet sich an Entwickler, die Ring-3-Anwendungen schreiben, Kernel-nahe Bibliotheken implementieren oder Syscalls direkt in NASM-Assembly nutzen.

Anwendungen entwickeln · Architektur · Übersicht


1. Aufrufkonvention

Lyx OS nutzt ausschließlich die SYSCALL/SYSRET-Instruktion (AMD64 Fast Syscall). Es gibt keine Int-80-Kompatibilität und kein Vsyscall-Interface.

Register-Layout

Eingabe:
  rax  = Syscall-Nummer (0x0000 – 0x0CFF)
  rdi  = Argument 1
  rsi  = Argument 2
  rdx  = Argument 3
  r10  = Argument 4  (statt rcx — wird vom SYSCALL-Mechanismus überschrieben)
  r8   = Argument 5
  r9   = Argument 6

Ausgabe:
  rax  = Fehlercode  (0 = Erfolg; >0 = ERR_* Konstante)
  rdx  = Rückgabewert (fd, Adresse, Byte-Anzahl, PID, ...)

Nicht verändert (callee-saved):  rbx, rbp, r12–r15
CLOBBERT:                        rcx, r11 (SYSCALL-Mechanismus)
                                 rdi, rsi, r10, r8, r9

Zwei-Register-Rückgabe

Das Design-Alleinstellungsmerkmal: Fehler und Nutzwert kommen in zwei getrennten Registern. Kein globales errno, kein Vorzeichentest auf einem einzigen Register.

rax = 0      → Erfolg; Nutzwert steht in rdx
rax = ERR_*  → Fehler; rdx ist undefiniert

lyxc –target=lyxos übersetze das als Tupel-Syntax:

var fd, err := sys_open(AT_CWD, "config.txt", O_READ, 0);
if (err != ERR_OK) {
    EPrintLn("open fehlgeschlagen: " + IntToStr(err));
    return 1;
}

NASM-Beispiel

; sys_write(FD_STDOUT, buf, len)  →  bytes_written in rdx, Fehler in rax
mov  rax, 0x0203        ; sys_write
mov  rdi, 1             ; arg1: fd = FD_STDOUT
mov  rsi, buf           ; arg2: Puffer
mov  rdx, len           ; arg3: Länge
syscall
test rax, rax
jnz  .error             ; rax ≠ 0 → Fehler
; rdx = Anzahl tatsächlich geschriebener Bytes

lyxc-Builtin-Mapping

lyxc-Builtin LyxOS-Syscall
PrintLn(s) sys_write(FD_STDOUT, …)
EPrintLn(s) sys_write(FD_STDERR, …)
mmap(…) sys_mmap(…)
open(path, …) sys_open(AT_CWD, path, …)
read(fd, …) sys_read(fd, …)
write(fd, …) sys_write(fd, …)
close(fd) sys_close(fd)

2. Fehlercodes

con ERR_OK          : int64 := 0   // Erfolg
con ERR_PERM        : int64 := 1   // Zugriff verweigert
con ERR_NOENT       : int64 := 2   // Datei / Ressource nicht gefunden
con ERR_BUSY        : int64 := 3   // Ressource belegt
con ERR_IO          : int64 := 4   // I/O-Fehler
con ERR_NOMEM       : int64 := 5   // Kein Speicher
con ERR_AGAIN       : int64 := 6   // Nochmal versuchen (würde blockieren)
con ERR_INVAL       : int64 := 7   // Ungültiges Argument
con ERR_OVERFLOW    : int64 := 8   // Puffer- / Wert-Überlauf
con ERR_TIMEOUT     : int64 := 9   // Zeitüberschreitung
con ERR_EXIST       : int64 := 10  // Existiert bereits
con ERR_NOTDIR      : int64 := 11  // Kein Verzeichnis
con ERR_ISDIR       : int64 := 12  // Ist ein Verzeichnis
con ERR_NOTEMPTY    : int64 := 13  // Verzeichnis nicht leer
con ERR_BADFD       : int64 := 14  // Ungültiger File-Deskriptor
con ERR_NOSYS       : int64 := 15  // Syscall nicht implementiert
con ERR_NOTSUP      : int64 := 16  // Operation nicht unterstützt
con ERR_RANGE       : int64 := 17  // Wert außerhalb des gültigen Bereichs
con ERR_FAULT       : int64 := 18  // Ungültige Speicheradresse
con ERR_LOOP        : int64 := 19  // Symbolischer-Link-Schleife
con ERR_NAMETOOLONG : int64 := 20  // Pfad-Komponente zu lang
con ERR_NOTCONN     : int64 := 21  // Socket nicht verbunden
con ERR_CONNREFUSED : int64 := 22  // Verbindung abgelehnt
con ERR_ADDRUSE     : int64 := 23  // Adresse bereits in Benutzung
con ERR_BROKEN      : int64 := 24  // Verbindung / Pipe getrennt
con ERR_CANCELED    : int64 := 25  // Operation abgebrochen
con ERR_DEADLOCK    : int64 := 26  // Würde Deadlock verursachen
con ERR_TOOBIG      : int64 := 27  // Argument / Daten zu groß
con ERR_NODEV       : int64 := 28  // Kein solches Gerät
con ERR_CAPVIOL     : int64 := 29  // Capability-Verletzung
con ERR_AIBUSY      : int64 := 30  // KI-Inferenz-Engine ausgelastet
con ERR_BADMODEL    : int64 := 31  // Ungültiges oder nicht unterstütztes KI-Modell
con ERR_CTXFULL     : int64 := 32  // KI-Kontextfenster voll


3. Standard-Konstanten

// Standard-File-Deskriptoren
con FD_STDIN  : int64 := 0
con FD_STDOUT : int64 := 1
con FD_STDERR : int64 := 2

// Spezielle dir_fd-Werte (alle Pfad-Syscalls nehmen dir_fd als erstes Argument)
con AT_CWD  : int64 := -1   // Aktuelles Arbeitsverzeichnis
con AT_ROOT : int64 := -2   // Dateisystem-Wurzel


4. Syscall-Tabelle

Kategorie 0x0000 – Prozess & Threads

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0000 sys_version (major«32)|minor ABI-Version; sollte beim Programmstart geprüft werden
0x0001 sys_exit code Beendet aktuellen Thread; kehrt nie zurück
0x0002 sys_exit_group code Beendet alle Threads der Prozessgruppe; kehrt nie zurück
0x0003 sys_spawn dir_fd, path, argv, envp, SpawnOpts* Prozess-fd Neuer Prozess aus ELF-Binary; kein fork()
0x0004 sys_thread_spawn entry, stack, stack_size, arg Thread-fd Neuer Thread im selben Adressraum
0x0005 sys_thread_exit code Beendet aktuellen Thread; kehrt nie zurück
0x0006 sys_wait proc_fd, status_out*, timeout_ns Wartet auf Prozess/Thread-Ende; -1 = unbegrenzt
0x0007 sys_getpid PID Prozess-ID
0x0008 sys_gettid TID Thread-ID
0x0009 sys_yield CPU freiwillig abgeben
0x000A sys_sleep_ns nanoseconds Schläft mindestens N Nanosekunden
0x000B sys_priority fd, priority Scheduling-Priorität setzen (0=normal, <0=höher)
0x000C sys_getrandom buf, len, flags Bytes Kryptographisch sicherer Zufall
0x000D sys_signal_mask notify_fd, mask vorherige Maske Asynchrone Benachrichtigungen maskieren

Kategorie 0x0100 – Speicher

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0100 sys_mmap hint, size, prot, flags Adresse Speicher-Mapping; hint=0 → Kernel wählt Adresse
0x0101 sys_munmap addr, size Mapping freigeben
0x0102 sys_mprotect addr, size, prot Schutzflags ändern
0x0103 sys_madvise addr, size, advice Hinweise an VMM (MADV_SEQUENTIAL usw.)
0x0104 sys_shm_create size, flags shm-fd Shared-Memory-Objekt erzeugen
0x0105 sys_shm_map shm_fd, offset, size, prot Adresse Shared Memory in Adressraum einblenden

con PROT_NONE  : int64 := 0
con PROT_READ  : int64 := 1
con PROT_WRITE : int64 := 2
con PROT_EXEC  : int64 := 4

con MAP_PRIVATE   : int64 := 1
con MAP_SHARED    : int64 := 2
con MAP_ANONYMOUS : int64 := 4
con MAP_FIXED     : int64 := 8
con MAP_POPULATE  : int64 := 16   // Seiten sofort einpagen

Kategorie 0x0200 – Dateisystem & VFS

Alle Pfad-Syscalls nehmen dir_fd als erstes Argument. AT_CWD = -1 ist der Default. Kein open() ohne Basis-fd — verhindert TOCTOU-Lücken von Grund auf. CLOEXEC ist implizit; O_INHERIT deaktiviert es explizit.

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0200 sys_open dir_fd, path, flags, mode fd Datei öffnen oder anlegen
0x0201 sys_close fd fd schließen
0x0202 sys_read fd, buf, count Bytes gelesen Bis zu count Bytes lesen
0x0203 sys_write fd, buf, count Bytes geschrieben Bis zu count Bytes schreiben
0x0204 sys_seek fd, offset, whence neue Position Cursor setzen (SEEK_SET=0, SEEK_CUR=1, SEEK_END=2)
0x0205 sys_stat dir_fd, path, Stat*, flags Datei-Metadaten lesen
0x0206 sys_fstat fd, Stat* stat auf bereits offenem fd
0x0207 sys_mkdir dir_fd, path, mode Verzeichnis anlegen
0x0208 sys_unlink dir_fd, path, flags Datei löschen; UNLINK_DIR=1rmdir
0x0209 sys_rename old_dir, old_path, new_dir, new_path Atomares Umbenennen
0x020A sys_readdir fd, buf, buf_size Bytes Verzeichniseinträge lesen (DirEntry-Array)
0x020B sys_dup fd, flags neuer fd fd duplizieren
0x020C sys_pipe read_fd*, write_fd*, flags Unidirektionales Byte-Pipe-Paar
0x020D sys_truncate fd, size Dateigröße setzen
0x020E sys_sync fd Puffer auf Datenträger schreiben
0x020F sys_mount dev_fd, mnt_dir, path, fs_type, flags Dateisystem einhängen
0x0210 sys_umount dir_fd, path, flags Dateisystem aushängen
0x0211 sys_getcwd buf, size Bytes Aktuelles Arbeitsverzeichnis
0x0212 sys_chdir dir_fd, path Arbeitsverzeichnis wechseln
0x0213 sys_symlink target, dir_fd, link_path Symbolischen Link erzeugen
0x0214 sys_readlink dir_fd, path, buf, size Bytes Link-Ziel lesen
0x0215 sys_content_id fd, algo, out, out_len Hash-Bytes Kryptographischer Content-Hash (BLAKE3 oder SHA-256)

con O_READ      : int64 := 1
con O_WRITE     : int64 := 2
con O_RDWR      : int64 := 3
con O_CREAT     : int64 := 4
con O_EXCL      : int64 := 8
con O_TRUNC     : int64 := 16
con O_APPEND    : int64 := 32
con O_NONBLOCK  : int64 := 64
con O_INHERIT   : int64 := 128   // fd über sys_spawn vererben (CLOEXEC ist Default)
con O_DIRECTORY : int64 := 256
con O_TMPFILE   : int64 := 512

Kategorie 0x0300 – I/O & Geräte

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0300 sys_poll PollEvent*, count, timeout_ns bereite fds Mehrere fds gleichzeitig beobachten
0x0301 sys_ioctl fd, request, arg gerätespezifisch Gerätespezifische Steuerbefehle
0x0302 sys_mmap_device fd, offset, size, prot Adresse MMIO-Register in Adressraum mappen
0x0303 sys_irq_bind irq, notify_fd IRQ an Notification-fd binden (Userspace-Treiber)
0x0304 sys_port_in port, width Wert x86 IN-Befehl (erfordert CAP_IOPORT)
0x0305 sys_port_out port, width, value x86 OUT-Befehl (erfordert CAP_IOPORT)

Kategorie 0x0400 – IPC & Synchronisation

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0400 sys_mutex_create flags Mutex-fd Kernel-Mutex (MUTEX_PLAIN/RECURSIVE/ROBUST)
0x0401 sys_mutex_lock fd, timeout_ns Mutex sperren
0x0402 sys_mutex_unlock fd Mutex entsperren
0x0403 sys_sem_create initial, flags Semaphor-fd Zählsemaphor
0x0404 sys_sem_wait fd, timeout_ns Semaphor dekrementieren
0x0405 sys_sem_post fd Semaphor inkrementieren
0x0406 sys_channel_create flags (send«32)|recv Bidirektionaler Nachrichten-Kanal (Mach-Port-Stil)
0x0407 sys_channel_send fd, msg, size, fds*, count Nachricht + optionale fds senden
0x0408 sys_channel_recv fd, msg, size, fds*, count* Bytes Nachricht + fds empfangen
0x0409 sys_notify_create flags Notify-fd Asynchrone Notification-Queue (Unix-Signal-Ersatz)
0x040A sys_notify_wait fd, Notification*, count, timeout_ns Events Ausstehende Notifications lesen
0x040B sys_notify_post fd, type, data Notification in Queue schreiben
0x040C sys_futex addr*, op, val, timeout_ns, addr2*, val3 Fast Userspace Mutex (für Laufzeit-Implementierungen)

Kategorie 0x0500 – Zeit

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0500 sys_clock_get clock_id, TimeSpec* Nanosekunden Systemuhr lesen
0x0501 sys_clock_set clock_id, TimeSpec* Systemuhr setzen (erfordert Admin-Capability)
0x0502 sys_timer_create clock_id, notify_fd, flags Timer-fd Periodischen/einmaligen Timer erzeugen
0x0503 sys_timer_set fd, interval_ns, initial_ns Timer aktivieren / deaktivieren (0/0 = disarm)
0x0504 sys_timer_wait fd, timeout_ns abgelaufene Ticks Bis zum nächsten Timer-Ablauf warten

con CLOCK_REAL   : int64 := 0   // Wanduhr (UTC, kann springen)
con CLOCK_MONO   : int64 := 1   // Monoton seit Boot
con CLOCK_CPU    : int64 := 2   // CPU-Zeit des aktuellen Prozesses
con CLOCK_THREAD : int64 := 3   // CPU-Zeit des aktuellen Threads

Kategorie 0x0600 – Netzwerk

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0600 sys_socket domain, type, proto Socket-fd Socket erzeugen
0x0601 sys_bind fd, addr*, addr_len Socket an lokale Adresse binden
0x0602 sys_listen fd, backlog TCP-Socket in Wartezustand versetzen
0x0603 sys_accept fd, addr_out*, len* Client-fd Eingehende Verbindung akzeptieren
0x0604 sys_connect fd, addr*, addr_len Verbindung herstellen
0x0605 sys_sendmsg fd, MsgHdr*, flags Bytes Daten mit Scatter/Gather senden
0x0606 sys_recvmsg fd, MsgHdr*, flags Bytes Daten empfangen
0x0607 sys_setsockopt fd, level, opt, val*, len Socket-Option setzen
0x0608 sys_getsockopt fd, level, opt, val*, len* Socket-Option lesen
0x0609 sys_shutdown fd, how Socket-Verbindung (teil-)schließen

Kategorie 0x0700 – Sicherheit & Capabilities

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0700 sys_cap_create resource_fd, rights Capability-fd Capability für fd mit bestimmten Rechten erzeugen
0x0701 sys_cap_restrict cap_fd, rights eingeschränkter fd Rechte reduzieren (nie erweitern)
0x0702 sys_cap_rights cap_fd Rechte-Bitmask Aktuelle Rechte abfragen
0x0703 sys_pledge promises, exec_promises Erlaubte Syscall-Klassen dauerhaft einschränken
0x0704 sys_unveil path, permissions Sichtbaren Dateisystem-Baum einschränken
0x0705 sys_uid_get UID User-ID abfragen
0x0706 sys_gid_get GID Gruppen-ID abfragen
0x0707 sys_setuid uid User-ID ändern (erfordert Admin-Capability)
0x0708 sys_seccomp mode, BpfProg* BPF-Syscall-Filter installieren

// Capability-Rechte
con RIGHT_READ    : int64 := 1
con RIGHT_WRITE   : int64 := 2
con RIGHT_EXEC    : int64 := 4
con RIGHT_MMAP    : int64 := 8
con RIGHT_SEEK    : int64 := 16
con RIGHT_STAT    : int64 := 32
con RIGHT_DELETE  : int64 := 64
con RIGHT_CONTROL : int64 := 128
con RIGHT_ALL     : int64 := 0x7FFFFFFFFFFFFFFF

Kategorie 0x0800 – KI & Semantik

KI-Modelle sind Kernel-verwaltete Ressourcen. Das gesamte KI-Subsystem ist ein ladbares Kernel-Modul (kernel/ai.lyx). Wenn es nicht geladen ist, geben alle 0x0800-Syscalls ERR_NOTSUP zurück.

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0800 sys_ai_model_load dir_fd, path, flags Model-fd KI-Modell laden (GGUF, SafeTensors); Weights OS-weit geteilt
0x0801 sys_ai_model_unload model_fd Modell freigeben wenn alle Contexts geschlossen
0x0802 sys_ai_model_info model_fd, AiModelInfo* Metadaten lesen (Name, Architektur, Parameter, Context-Größe)
0x0803 sys_ai_ctx_create model_fd, ctx_size, flags Context-fd Inferenz-Kontext (KV-Cache) erzeugen
0x0804 sys_ai_ctx_destroy ctx_fd KV-Cache freigeben
0x0805 sys_ai_infer ctx_fd, prompt_fd, result_fd, AiInferOpts* Job-fd Asynchrone Inferenz; beobachtbar via sys_poll
0x0806 sys_ai_infer_sync ctx_fd, prompt, len, result, max, AiInferOpts* Bytes Synchrone Inferenz; blockiert den Thread
0x0807 sys_ai_embed ctx_fd, text, len, f32*, dim* Embedding-Vektor erzeugen
0x0808 sys_ai_token_count ctx_fd, text, len Token-Anzahl Tokens zählen ohne Inferenz
0x0809 sys_ai_search index_fd, f32*, dim, k, AiSearchResult*, max Treffer k-Nearest-Neighbor-Suche im Kernel-Vektorindex
0x080A sys_ai_index_create dim, flags Index-fd Kernel-Vektorindex erzeugen
0x080B sys_ai_index_insert index_fd, id, f32*, dim, meta*, len Vektor in Index einfügen
0x080C sys_ai_index_delete index_fd, id Vektoreintrag entfernen
0x080D sys_sem_annotate addr, size, embed_fd Embedding an Speicherregion binden (semantisches Paging)
0x080E sys_sem_query f32*, dim, k, SemMemResult*, max Treffer Speicherregionen semantisch suchen
0x080F sys_graph_node_create fd, flags Node-ID fd als Knoten im Kernel-Wissensgraphen registrieren
0x0810 sys_graph_edge_add src, rel_type, dst, meta*, len Edge-ID Gerichtete Kante zwischen Graph-Knoten erzeugen
0x0811 sys_graph_edge_remove edge_id Graph-Kante entfernen
0x0812 sys_graph_query node_id, rel_type, depth, GraphQueryResult*, max Treffer Wissensgraph traversieren

Kategorie 0x0900 – Lyra Agent Interface

Nur für Prozesse mit „lyra“-Pledge. Normale Anwendungen kommunizieren mit Lyra über sys_channel_*.

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0900 sys_intent_submit text, len, priority Intent-ID Natürlichsprachlichen Intent an Lyra übermitteln
0x0901 sys_intent_wait intent_id, timeout_ns, result_fd Status Auf Intent-Auflösung warten
0x0902 sys_intent_cancel intent_id Laufenden Intent abbrechen
0x0903 sys_lyra_event event_type, data*, len Sensorisches Event senden (Sprache, Geste, …)
0x0904 sys_dream_register fn_fd, interval_ns, flags Dream-ID Callback in CPU-Idle-Zyklen registrieren
0x0905 sys_dream_unregister dream_id Dream-Callback entfernen
0x0906 sys_memory_store key, val*, len, flags Eintrag in Lyras episodischen Ringpuffer schreiben
0x0907 sys_memory_recall key, buf*, size Bytes Eintrag aus episodischem Speicher lesen
0x0908 sys_memory_search f32*, dim, k, MemoryResult*, max Treffer Semantische Suche im episodischen Speicher
0x0909 sys_context_push frame*, len Kontext-Frame auf Lyras Kernel-Stack schieben
0x090A sys_context_pop Obersten Kontext-Frame entfernen
0x090B sys_timeline_query from_ns, to_ns, f32*, dim, TimelineResult*, max Treffer Ereignisse im Zeitfenster suchen

Kategorie 0x0B00 – Task & Automatische Parallelität

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0B00 sys_task_spawn fn*, arg*, arg_size, flags Task-fd Leichtgewichtigen Task starten; Kernel wählt Core
0x0B01 sys_task_await task_fd, result*, size, timeout_ns Bytes Auf Task-Abschluss warten
0x0B02 sys_task_cancel task_fd Task abbrechen
0x0B03 sys_task_group_create flags group_fd Task-Gruppe erzeugen
0x0B04 sys_task_group_add group_fd, fn*, arg*, size Task-fd Task zur Gruppe hinzufügen
0x0B05 sys_task_group_await group_fd, timeout_ns abgeschl. Tasks Auf alle Tasks der Gruppe warten
0x0B06 sys_cpu_count CPU-Anzahl Anzahl logischer Kerne
0x0B07 sys_cpu_topology CpuTopology*, size CPU-Topologie lesen (Cores, Sockets, NUMA)
0x0B08 sys_affinity_hint fd, cpu_mask Weicher Core-Präferenz-Hinweis (kein Mandat)
0x0B09 sys_numa_alloc size, node_hint, prot Adresse Speicher bevorzugt auf NUMA-Node allozieren

con TASK_DETACHED          : int64 := 1
con TASK_CPU_INTENSIVE     : int64 := 2
con TASK_IO_INTENSIVE      : int64 := 4
con TASK_LATENCY_SENSITIVE : int64 := 8
con TASK_INHERIT_CAPS      : int64 := 16

Kategorie 0x0A00 – Debug & Telemetrie

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0A00 sys_debug_print msg, len Kernel-Debug-Ausgabe (Port 0xE9 / COM1); No-Op in Release
0x0A01 sys_trace_event event_id, data*, len Trace-Event in Kernel-Ringpuffer
0x0A02 sys_perf_counter counter_id Wert Hardware-Performance-Counter (RDPMC)
0x0A03 sys_stack_trace buf*, size Frame-Anzahl Aktuelle Rücksprungadressen in Puffer schreiben
0x0A04 sys_watchpoint_set addr*, size, flags Watchpoint-ID Hardware-Watchpoint setzen (DR0–DR3)
0x0A05 sys_watchpoint_clear wp_id Hardware-Watchpoint löschen

Kategorie 0x0C00 – IOFS

Niedrig-Level-Zugang zum Island & Ocean File System. Normale Anwendungen nutzen das VFS-Interface.

Nr Name Argumente Rückgabe (rdx) Beschreibung
0x0C00 sys_iofs_mount dev_fd, IofsOpts* mount_fd Raw-Block-Device als IOFS einbinden
0x0C01 sys_iofs_compact mount_fd, region_hint Pages Manuellen Kompaktierungszyklus auslösen
0x0C02 sys_iofs_page_info mount_fd, page_id, IofsPageInfo* IOFS-Page-Header und Metadaten lesen
0x0C03 sys_iofs_sandbox_enter mount_fd Panic-Sandbox aktivieren (CAP_ADMIN erforderlich)
0x0C04 sys_iofs_sandbox_exit Panic-Sandbox verlassen

5. Übersicht aller Kategorien

Bereich Kategorie Syscall-Anzahl
0x0000–0x000D Prozess & Threads 14
0x0100–0x0105 Speicher 6
0x0200–0x0215 Dateisystem & VFS 22
0x0300–0x0305 I/O & Geräte 6
0x0400–0x040C IPC & Synchronisation 13
0x0500–0x0504 Zeit 5
0x0600–0x0609 Netzwerk 10
0x0700–0x0708 Sicherheit & Capabilities 9
0x0800–0x0812 KI & Semantik + Wissensgraph 19
0x0900–0x090B Lyra Agent Interface 12
0x0A00–0x0A05 Debug & Telemetrie 6
0x0B00–0x0B09 Task & Automatische Parallelität 10
0x0C00–0x0C04 IOFS 5
Gesamt 137

Reservierte Bereiche: 0x000E–0x00FF, 0x0106–0x01FF, 0x0216–0x02FF, 0x0813–0x08FF, 0x090C–0x09FF, 0x0D00–0xFFFF (zukünftige Kategorien).


6. Pledge-Promises

sys_pledge beschränkt dauerhaft die erlaubten Syscall-Klassen eines Prozesses. Einmal gesetzt, nie erweiterbar.

"stdio"   – read/write/poll auf bestehenden fds
"rpath"   – Dateisystem lesend öffnen/stat
"wpath"   – Dateisystem schreibend öffnen
"cpath"   – Dateien erzeugen/löschen
"exec"    – sys_spawn
"net"     – Socket-Syscalls (0x0600-0x0609)
"thread"  – sys_thread_spawn
"memory"  – sys_mmap / sys_mprotect
"device"  – sys_ioctl, sys_port_in/out
"ai"      – KI-Syscalls (0x0800-0x08FF)
"lyra"    – Lyra-Syscalls (0x0900-0x09FF)
"admin"   – privilegierte Syscalls (sys_mount, sys_setuid, ...)

Letzte Aktualisierung: 2026-06-09