Microkernel thing OS experiment (Zig ⚡)
1pub const gdt = @import("gdt.zig");
2pub const tss = @import("tss.zig");
3const arch = @import("../root.zig");
4const common = @import("common");
5const Queue = @import("Queue");
6
7// Uses an intrusive queue
8pub const Task = struct {
9 // Saved Registers
10 regs: arch.interrupts.idt.SavedRegisters align(8),
11 // Address Space context
12 cr3_val: u64,
13 // Instruction Pointer
14 rip: u64,
15 // Stack Pointer
16 rsp: u64,
17 // Next task basically
18 node: Queue.Node = .{},
19
20 pub fn getPagingContext(self: Task) arch.mm.paging.Context {
21 return .{
22 .cr3_val = self.cr3_val,
23 .level5 = common.init_data.kernel_paging_ctx.level5,
24 };
25 }
26};