Microkernel thing OS experiment (Zig ⚡)
1const std = @import("std");
2const arch = @import("arch");
3const Queue = @import("Queue");
4const Task = arch.structures.Task;
5
6var task_queue: Queue = .{};
7
8pub fn pushTask(task: *Task) void {
9 task_queue.enqueue(&task.node);
10}
11
12pub fn getNextTask() ?*Task {
13 const node = task_queue.dequeue() orelse return null;
14 const task: *Task = @fieldParentPtr("node", node);
15 return task;
16}