core+init: Instead of exporting an "arch" symbol for platform-specific code, use "usingnamespace".

This makes imports of  platform-specific files way cleaner.
This commit is contained in:
Gabriel 2025-02-22 15:48:41 +01:00
parent 6acf83692f
commit 5f9514627b
15 changed files with 29 additions and 30 deletions

View File

@ -2,8 +2,8 @@ const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
const thread = @import("../thread.zig"); const thread = @import("../thread.zig");
const pmm = @import("../pmm.zig"); const pmm = @import("../pmm.zig");
const vmm = @import("vmm.zig").arch; const vmm = @import("vmm.zig");
const platform = @import("platform.zig").arch; const platform = @import("platform.zig");
pub const arch = switch (target.cpu.arch) { pub const arch = switch (target.cpu.arch) {
.x86_64 => @import("x86_64/cpu.zig"), .x86_64 => @import("x86_64/cpu.zig"),

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
pub const arch = switch (target.cpu.arch) { pub usingnamespace switch (target.cpu.arch) {
.x86_64 => @import("x86_64/interrupts.zig"), .x86_64 => @import("x86_64/interrupts.zig"),
else => { else => {
@compileError("unsupported architecture"); @compileError("unsupported architecture");

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
pub const arch = switch (target.cpu.arch) { pub usingnamespace switch (target.cpu.arch) {
.x86_64 => @import("x86_64/platform.zig"), .x86_64 => @import("x86_64/platform.zig"),
else => { else => {
@compileError("unsupported architecture"); @compileError("unsupported architecture");

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
pub const arch = switch (target.cpu.arch) { pub usingnamespace switch (target.cpu.arch) {
.x86_64 => @import("x86_64/thread.zig"), .x86_64 => @import("x86_64/thread.zig"),
else => { else => {
@compileError("unsupported architecture"); @compileError("unsupported architecture");

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
pub const arch = switch (target.cpu.arch) { pub usingnamespace switch (target.cpu.arch) {
.x86_64 => @import("x86_64/vmm.zig"), .x86_64 => @import("x86_64/vmm.zig"),
else => { else => {
@compileError("unsupported architecture"); @compileError("unsupported architecture");

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
const vmm = @import("arch/vmm.zig").arch; const vmm = @import("arch/vmm.zig");
const platform = @import("arch/platform.zig").arch; const platform = @import("arch/platform.zig");
const pmm = @import("pmm.zig"); const pmm = @import("pmm.zig");
const debug = @import("arch/debug.zig"); const debug = @import("arch/debug.zig");

View File

@ -2,9 +2,9 @@ const std = @import("std");
const easyboot = @cImport(@cInclude("easyboot.h")); const easyboot = @cImport(@cInclude("easyboot.h"));
const debug = @import("arch/debug.zig"); const debug = @import("arch/debug.zig");
const cpu = @import("arch/cpu.zig"); const cpu = @import("arch/cpu.zig");
const platform = @import("arch/platform.zig").arch; const platform = @import("arch/platform.zig");
const interrupts = @import("arch/interrupts.zig").arch; const interrupts = @import("arch/interrupts.zig");
const vmm = @import("arch/vmm.zig").arch; const vmm = @import("arch/vmm.zig");
const multiboot = @import("multiboot.zig"); const multiboot = @import("multiboot.zig");
const pmm = @import("pmm.zig"); const pmm = @import("pmm.zig");
const thread = @import("thread.zig"); const thread = @import("thread.zig");

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const easyboot = @cImport(@cInclude("easyboot.h")); const easyboot = @cImport(@cInclude("easyboot.h"));
const platform = @import("arch/platform.zig").arch; const platform = @import("arch/platform.zig");
const vmm = @import("arch/vmm.zig").arch; const vmm = @import("arch/vmm.zig");
const mmap = @import("mmap.zig"); const mmap = @import("mmap.zig");
const bmap = @import("lib/bitmap.zig"); const bmap = @import("lib/bitmap.zig");
const locking = @import("lib/spinlock.zig"); const locking = @import("lib/spinlock.zig");

View File

@ -1,4 +1,4 @@
const platform = @import("../arch/platform.zig").arch; const platform = @import("../arch/platform.zig");
const sys = @import("syscall.zig"); const sys = @import("syscall.zig");
const pmm = @import("../pmm.zig"); const pmm = @import("../pmm.zig");

View File

@ -1,4 +1,4 @@
const platform = @import("../arch/platform.zig").arch; const platform = @import("../arch/platform.zig");
const sys = @import("syscall.zig"); const sys = @import("syscall.zig");
const debug = @import("../arch/debug.zig"); const debug = @import("../arch/debug.zig");

View File

@ -1,11 +1,11 @@
const std = @import("std"); const std = @import("std");
const system = @import("system"); const system = @import("system");
const platform = @import("../arch/platform.zig").arch; const platform = @import("../arch/platform.zig");
const sys = @import("syscall.zig"); const sys = @import("syscall.zig");
const thread = @import("../thread.zig"); const thread = @import("../thread.zig");
const cpu = @import("../arch/cpu.zig"); const cpu = @import("../arch/cpu.zig");
const pmm = @import("../pmm.zig"); const pmm = @import("../pmm.zig");
const vmm = @import("../arch/vmm.zig").arch; const vmm = @import("../arch/vmm.zig");
const RingBuffer = system.ring_buffer.RingBuffer; const RingBuffer = system.ring_buffer.RingBuffer;

View File

@ -1,6 +1,6 @@
const std = @import("std"); const std = @import("std");
const platform = @import("../arch/platform.zig").arch; const platform = @import("../arch/platform.zig");
const print = @import("print.zig").print; const print = @import("print.zig");
const mem = @import("mem.zig"); const mem = @import("mem.zig");
const sched = @import("sched.zig"); const sched = @import("sched.zig");
@ -15,7 +15,7 @@ pub const Arguments = struct {
const SystemCall = *const fn (frame: *platform.Registers, args: *Arguments, retval: *isize) anyerror!void; const SystemCall = *const fn (frame: *platform.Registers, args: *Arguments, retval: *isize) anyerror!void;
const syscalls = [_]SystemCall{ print, mem.allocFrame, mem.lockFrame, mem.freeFrame, sched.yield, sched.setPriority, sched.getPriority, sched.sleep, sched.setEventQueue }; const syscalls = [_]SystemCall{ print.print, mem.allocFrame, mem.lockFrame, mem.freeFrame, sched.yield, sched.setPriority, sched.getPriority, sched.sleep, sched.setEventQueue };
pub fn invokeSyscall(number: usize, frame: *platform.Registers, args: *Arguments, retval: *isize) void { pub fn invokeSyscall(number: usize, frame: *platform.Registers, args: *Arguments, retval: *isize) void {
if (number >= syscalls.len) { if (number >= syscalls.len) {

View File

@ -1,14 +1,14 @@
const std = @import("std"); const std = @import("std");
const system = @import("system"); const system = @import("system");
const vmm = @import("arch/vmm.zig").arch; const vmm = @import("arch/vmm.zig");
const platform = @import("arch/platform.zig").arch; const platform = @import("arch/platform.zig");
const pmm = @import("pmm.zig"); const pmm = @import("pmm.zig");
const cpu = @import("arch/cpu.zig"); const cpu = @import("arch/cpu.zig");
const locking = @import("lib/spinlock.zig"); const locking = @import("lib/spinlock.zig");
const RingBuffer = system.ring_buffer.RingBuffer; const RingBuffer = system.ring_buffer.RingBuffer;
pub const arch = @import("arch/thread.zig").arch; pub const arch = @import("arch/thread.zig");
pub const ThreadState = enum { pub const ThreadState = enum {
Inactive, Inactive,

View File

@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const target = @import("builtin").target; const target = @import("builtin").target;
pub const arch = switch (target.cpu.arch) { pub usingnamespace switch (target.cpu.arch) {
.x86_64 => @import("x86_64/vm.zig"), .x86_64 => @import("x86_64/vm.zig"),
else => { else => {
@compileError("unsupported architecture"); @compileError("unsupported architecture");

View File

@ -1,5 +1,5 @@
const system = @import("system"); const system = @import("system");
const vm = @import("arch/vm.zig").arch; const vm = @import("arch/vm.zig");
const syscalls = system.syscalls; const syscalls = system.syscalls;
const buffer = system.ring_buffer; const buffer = system.ring_buffer;
@ -32,17 +32,16 @@ export fn _start(base: u64, address: u64) callconv(.C) noreturn {
while (true) {} while (true) {}
}; };
var event_queue = setupKernelRingBuffer(base) catch { const event_queue = setupKernelRingBuffer(base) catch {
while (true) {} while (true) {}
}; };
_ = event_queue;
var counter: u64 = 0; var counter: u64 = 0;
while (true) : (counter += 4) { while (true) : (counter += 4) {
syscalls.sleep(1000); syscalls.sleep(1000);
syscalls.print(counter);
// Reading a random number from the ring buffer we share with the kernel :D
var data: [1]u8 = .{0};
if (event_queue.read(@ptrCast(&data), 1)) syscalls.print(data[0]);
} }
} }