Microkernel thing OS experiment (Zig ⚡)
at dev 691 B view raw
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};