26 lines
671 B
Zig
26 lines
671 B
Zig
const system = @import("system");
|
|
|
|
const vm = system.vm;
|
|
const syscalls = system.syscalls;
|
|
const buffer = system.ring_buffer;
|
|
|
|
pub fn setupKernelRingBuffer(base: u64) !void {
|
|
const phys = vm.PhysFrame{ .address = try syscalls.allocFrame() };
|
|
|
|
const data: [*]u8 = @ptrCast(phys.virtualPointer(u8, base));
|
|
|
|
try syscalls.setEventQueue(syscalls.getThreadId(), phys.address);
|
|
|
|
const event_queue = buffer.RingBuffer.init(data, vm.PAGE_SIZE, true);
|
|
|
|
system.ipc.setKernelBuffer(event_queue);
|
|
}
|
|
|
|
pub fn discoverThreadLimit() u64 {
|
|
var pid: u64 = 1;
|
|
while (true) {
|
|
_ = syscalls.getPriority(pid) catch return (pid - 1);
|
|
pid += 1;
|
|
}
|
|
}
|