From d3231f1362af30ae230298a6304578023cb4312a Mon Sep 17 00:00:00 2001
From: Gabriel <gabscoarnec@gmail.com>
Date: Sat, 22 Feb 2025 23:01:48 +0100
Subject: [PATCH] init: Use getThreadId() instead of relying on a fixed PID

---
 system/init/main.zig | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/system/init/main.zig b/system/init/main.zig
index 1b519e0..f813e78 100644
--- a/system/init/main.zig
+++ b/system/init/main.zig
@@ -7,14 +7,12 @@ const buffer = system.ring_buffer;
 // FIXME: Make arch-specific.
 const PAGE_SIZE = 4096;
 
-const SELF_PID = 1;
-
 fn setupKernelRingBuffer(base: u64) !buffer.RingBuffer {
     const phys = vm.PhysFrame{ .address = try syscalls.allocFrame() };
 
     const data: [*]u8 = @ptrCast(phys.virtualPointer(u8, base));
 
-    try syscalls.setEventQueue(SELF_PID, phys.address);
+    try syscalls.setEventQueue(syscalls.getThreadId(), phys.address);
 
     return buffer.RingBuffer.init(data, PAGE_SIZE, true);
 }
@@ -23,9 +21,8 @@ fn setTokens() void {
     var tokens: u64 = 0;
     tokens |= @intFromEnum(system.kernel.Token.Root);
     tokens |= @intFromEnum(system.kernel.Token.PhysicalMemory);
-    tokens |= @intFromEnum(system.kernel.Token.EventQueue);
-    tokens |= @intFromEnum(system.kernel.Token.VirtualMemory);
-    syscalls.setTokens(SELF_PID, tokens) catch {};
+    tokens |= @intFromEnum(system.kernel.Token.CreateProcess);
+    syscalls.setTokens(syscalls.getThreadId(), tokens) catch {};
 }
 
 export fn _start(base: u64, address: u64) callconv(.C) noreturn {