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:
parent
6acf83692f
commit
5f9514627b
@ -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"),
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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,
|
||||||
|
@ -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");
|
||||||
|
@ -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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user