init: Use getThreadId() instead of relying on a fixed PID
This commit is contained in:
parent
aad9b8119b
commit
d3231f1362
@ -7,14 +7,12 @@ const buffer = system.ring_buffer;
|
|||||||
// FIXME: Make arch-specific.
|
// FIXME: Make arch-specific.
|
||||||
const PAGE_SIZE = 4096;
|
const PAGE_SIZE = 4096;
|
||||||
|
|
||||||
const SELF_PID = 1;
|
|
||||||
|
|
||||||
fn setupKernelRingBuffer(base: u64) !buffer.RingBuffer {
|
fn setupKernelRingBuffer(base: u64) !buffer.RingBuffer {
|
||||||
const phys = vm.PhysFrame{ .address = try syscalls.allocFrame() };
|
const phys = vm.PhysFrame{ .address = try syscalls.allocFrame() };
|
||||||
|
|
||||||
const data: [*]u8 = @ptrCast(phys.virtualPointer(u8, base));
|
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);
|
return buffer.RingBuffer.init(data, PAGE_SIZE, true);
|
||||||
}
|
}
|
||||||
@ -23,9 +21,8 @@ fn setTokens() void {
|
|||||||
var tokens: u64 = 0;
|
var tokens: u64 = 0;
|
||||||
tokens |= @intFromEnum(system.kernel.Token.Root);
|
tokens |= @intFromEnum(system.kernel.Token.Root);
|
||||||
tokens |= @intFromEnum(system.kernel.Token.PhysicalMemory);
|
tokens |= @intFromEnum(system.kernel.Token.PhysicalMemory);
|
||||||
tokens |= @intFromEnum(system.kernel.Token.EventQueue);
|
tokens |= @intFromEnum(system.kernel.Token.CreateProcess);
|
||||||
tokens |= @intFromEnum(system.kernel.Token.VirtualMemory);
|
syscalls.setTokens(syscalls.getThreadId(), tokens) catch {};
|
||||||
syscalls.setTokens(SELF_PID, tokens) catch {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export fn _start(base: u64, address: u64) callconv(.C) noreturn {
|
export fn _start(base: u64, address: u64) callconv(.C) noreturn {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user