Split the project into packages.

This commit is contained in:
Dawid Sobczak 2022-06-15 13:19:20 +01:00
parent 2ca66e3c39
commit ab93a33bbd
32 changed files with 123 additions and 84 deletions

View file

@ -1,13 +0,0 @@
const std = @import("std");
const builtin = @import("builtin");
const is_test = builtin.is_test;
const build_options = @import("build_options");
pub const internals = if (is_test) @import("../../test/mock/kernel/arch_mock.zig") else switch (builtin.cpu.arch) {
.i386 => @import("arch/x86/arch.zig"),
else => unreachable,
};
test "" {
_ = @import("arch/x86/arch.zig");
}

View file

@ -3,11 +3,11 @@ const Allocator = std.mem.Allocator;
const log = std.log.scoped(.x86_arch);
const builtin = @import("builtin");
const cmos = @import("cmos.zig");
const gdt = @import("gdt.zig");
const idt = @import("idt.zig");
pub const gdt = @import("gdt.zig");
pub const idt = @import("idt.zig");
const irq = @import("irq.zig");
const isr = @import("isr.zig");
const paging = @import("paging.zig");
pub const paging = @import("paging.zig");
const pic = @import("pic.zig");
const pci = @import("pci.zig");
const pit = @import("pit.zig");
@ -16,15 +16,16 @@ const serial = @import("serial.zig");
const syscalls = @import("syscalls.zig");
const tty = @import("tty.zig");
const vga = @import("vga.zig");
const mem = @import("../../mem.zig");
const multiboot = @import("multiboot.zig");
const vmm = @import("../../vmm.zig");
const keyboard = @import("keyboard.zig");
const Serial = @import("../../serial.zig").Serial;
const panic = @import("../../panic.zig").panic;
const TTY = @import("../../tty.zig").TTY;
const Keyboard = @import("../../keyboard.zig").Keyboard;
const Task = @import("../../task.zig").Task;
const pluto = @import("pluto");
const mem = pluto.mem;
const vmm = pluto.vmm;
const Keyboard = pluto.keyboard.Keyboard;
const Serial = pluto.serial.Serial;
const panic = pluto.panic_root.panic;
const TTY = pluto.tty.TTY;
const Task = pluto.task.Task;
const MemProfile = mem.MemProfile;
/// The type of a device.

View file

@ -3,7 +3,7 @@ const builtin = @import("builtin");
const is_test = builtin.is_test;
const expectEqual = std.testing.expectEqual;
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
/// The current year to be used for calculating the 4 digit year, as the CMOS return the last two
/// digits of the year.

View file

@ -6,7 +6,7 @@ const builtin = @import("builtin");
const is_test = builtin.is_test;
const panic = @import("../../panic.zig").panic;
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
/// The access bits for a GDT entry.
const AccessBits = packed struct {

View file

@ -8,7 +8,7 @@ const is_test = builtin.is_test;
const panic = @import("../../panic.zig").panic;
const build_options = @import("build_options");
const gdt = if (is_test) @import("../../../../test/mock/kernel/gdt_mock.zig") else @import("gdt.zig");
const arch = if (builtin.is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (builtin.is_test) @import("arch_mock") else @import("arch.zig");
/// The structure that contains all the information that each IDT entry needs.
pub const IdtEntry = packed struct {

View file

@ -7,9 +7,9 @@ const expectError = std.testing.expectError;
const log = std.log.scoped(.x86_irq);
const build_options = @import("build_options");
const panic = @import("../../panic.zig").panic;
const idt = if (is_test) @import("../../../../test/mock/kernel/idt_mock.zig") else @import("idt.zig");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const pic = if (is_test) @import("../../../../test/mock/kernel/pic_mock.zig") else @import("pic.zig");
const idt = if (is_test) @import("arch_mock").idt_mock else @import("idt.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const pic = if (is_test) @import("arch_mock").pic_mock else @import("pic.zig");
const interrupts = @import("interrupts.zig");
/// The error set for the IRQ. This will be from installing a IRQ handler.

View file

@ -8,8 +8,8 @@ const log = std.log.scoped(.x86_isr);
const build_options = @import("build_options");
const syscalls = @import("syscalls.zig");
const panic = @import("../../panic.zig").panic;
const idt = if (is_test) @import("../../../../test/mock/kernel/idt_mock.zig") else @import("idt.zig");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const idt = if (is_test) @import("arch_mock").idt_mock else @import("idt.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const interrupts = @import("interrupts.zig");
/// The error set for the ISR. This will be from installing a ISR handler.

View file

@ -6,7 +6,7 @@ const testing = std.testing;
const log = std.log.scoped(.x86_keyboard);
const irq = @import("irq.zig");
const pic = @import("pic.zig");
const arch = if (builtin.is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (builtin.is_test) @import("arch_mock") else @import("arch.zig");
const panic = @import("../../panic.zig").panic;
const kb = @import("../../keyboard.zig");
const Keyboard = kb.Keyboard;

View file

@ -7,7 +7,7 @@ const builtin = @import("builtin");
const is_test = builtin.is_test;
const panic = @import("../../panic.zig").panic;
const build_options = @import("build_options");
const arch = if (builtin.is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (builtin.is_test) @import("arch_mock") else @import("arch.zig");
const isr = @import("isr.zig");
const MemProfile = @import("../../mem.zig").MemProfile;
const tty = @import("../../tty.zig");

View file

@ -6,7 +6,7 @@ const build_options = @import("build_options");
const Allocator = std.mem.Allocator;
const ArrayList = std.ArrayList;
const log = std.log.scoped(.pci);
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
/// The port address for selecting a 32bit register in the PCI configuration space.
const CONFIG_ADDRESS: u16 = 0x0CF8;

View file

@ -5,7 +5,7 @@ const log = std.log.scoped(.x86_pic);
const builtin = @import("builtin");
const is_test = builtin.is_test;
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const panic = @import("../../panic.zig").panic;
// ----------

View file

@ -7,7 +7,7 @@ const expectEqual = std.testing.expectEqual;
const expectError = std.testing.expectError;
const log = std.log.scoped(.x86_pit);
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const panic = @import("../../panic.zig").panic;
const irq = @import("irq.zig");
const pic = @import("pic.zig");

View file

@ -6,11 +6,11 @@ const expectEqual = std.testing.expectEqual;
const expectError = std.testing.expectError;
const log = std.log.scoped(.x86_rtc);
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const pic = @import("pic.zig");
const pit = @import("pit.zig");
const irq = @import("irq.zig");
const cmos = if (is_test) @import("../../../../test/mock/kernel/cmos_mock.zig") else @import("cmos.zig");
const cmos = if (is_test) @import("arch_mock").cmos_mock else @import("cmos.zig");
const panic = @import("../../panic.zig").panic;
const scheduler = @import("../../scheduler.zig");

View file

@ -3,12 +3,13 @@ const log = std.log.scoped(.x86_syscalls);
const builtin = @import("builtin");
const is_test = builtin.is_test;
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const testing = std.testing;
const expect = std.testing.expect;
const isr = @import("isr.zig");
const panic = @import("../../panic.zig").panic;
const syscalls = @import("../../syscalls.zig");
const pluto = @import("pluto");
const panic = pluto.panic_root.panic;
const syscalls = pluto.syscalls;
/// The isr number associated with syscalls
pub const INTERRUPT: u16 = 0x80;

View file

@ -7,7 +7,7 @@ const expectEqual = std.testing.expectEqual;
const expectError = std.testing.expectError;
const log = std.log.scoped(.x86_tty);
const build_options = @import("build_options");
const vga = if (is_test) @import("../../../../test/mock/kernel/vga_mock.zig") else @import("vga.zig");
const vga = if (is_test) @import("arch_mock").vga_mock else @import("vga.zig");
const panic = @import("../../panic.zig").panic;
/// The error set for if there is an error whiles printing.

View file

@ -4,7 +4,7 @@ const is_test = builtin.is_test;
const expectEqual = std.testing.expectEqual;
const log = std.log.scoped(.x86_vga);
const build_options = @import("build_options");
const arch = if (is_test) @import("../../../../test/mock/kernel/arch_mock.zig") else @import("arch.zig");
const arch = if (is_test) @import("arch_mock") else @import("arch.zig");
const panic = @import("../../panic.zig").panic;
/// The port address for the VGA register selection.

View file

@ -8,7 +8,9 @@ const log = std.log.scoped(.fat32);
const AutoHashMap = std.AutoHashMap;
const Allocator = std.mem.Allocator;
const ArrayList = std.ArrayList;
const arch = @import("../arch.zig").internals;
const builtins = @import("builtin");
const is_test = builtins.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const vfs = @import("vfs.zig");
const mem = @import("../mem.zig");
const CodePage = @import("../code_page/code_page.zig").CodePage;

View file

@ -2,7 +2,9 @@ const std = @import("std");
const testing = std.testing;
const ArrayList = std.ArrayList;
const Allocator = std.mem.Allocator;
const arch = @import("arch.zig").internals;
const builtin = @import("builtin");
const is_test = builtin.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
/// An arbitrary number of keys to remember before dropping any more that arrive. Is a power of two so we can use nice overflowing addition
pub const QUEUE_SIZE = 32;

View file

@ -1,23 +1,23 @@
const std = @import("std");
const kmain_log = std.log.scoped(.kmain);
const builtin = @import("builtin");
const is_test = builtin.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const pluto = @import("pluto");
const build_options = @import("build_options");
const arch = @import("arch.zig").internals;
const tty = @import("tty.zig");
const log_root = @import("log.zig");
const pmm = @import("pmm.zig");
const serial = @import("serial.zig");
const vmm = @import("vmm.zig");
const mem = @import("mem.zig");
const panic_root = @import("panic.zig");
const task = @import("task.zig");
const heap = @import("heap.zig");
const scheduler = @import("scheduler.zig");
const vfs = @import("filesystem/vfs.zig");
const initrd = @import("filesystem/initrd.zig");
const keyboard = @import("keyboard.zig");
const is_test = builtin.is_test;
const kmain_log = std.log.scoped(.kmain);
const Allocator = std.mem.Allocator;
const tty = pluto.tty;
const panic_root = pluto.panic_root;
const log_root = pluto.log_root;
const heap = pluto.heap;
const serial = pluto.serial;
const pmm = pluto.pmm;
const vmm = pluto.vmm;
const keyboard = pluto.keyboard;
const initrd = pluto.initrd;
const vfs = pluto.vfs;
const scheduler = pluto.scheduler;
const task = pluto.task;
comptime {
if (!is_test) {

View file

@ -1,6 +1,8 @@
const std = @import("std");
const builtin = std.builtin;
const arch = @import("arch.zig").internals;
const builtins = @import("builtin");
const is_test = builtins.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const mem = @import("mem.zig");
const build_options = @import("build_options");
const ArrayList = std.ArrayList;

14
src/kernel/pluto.zig Normal file
View file

@ -0,0 +1,14 @@
pub const tty = @import("tty.zig");
pub const log_root = @import("log.zig");
pub const pmm = @import("pmm.zig");
pub const serial = @import("serial.zig");
pub const vmm = @import("vmm.zig");
pub const mem = @import("mem.zig");
pub const panic_root = @import("panic.zig");
pub const task = @import("task.zig");
pub const heap = @import("heap.zig");
pub const scheduler = @import("scheduler.zig");
pub const vfs = @import("filesystem/vfs.zig");
pub const initrd = @import("filesystem/initrd.zig");
pub const keyboard = @import("keyboard.zig");
pub const syscalls = @import("syscalls.zig");

View file

@ -2,7 +2,7 @@ const is_test = @import("builtin").is_test;
const std = @import("std");
const log = std.log.scoped(.pmm);
const build_options = @import("build_options");
const arch = @import("arch.zig").internals;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const MemProfile = @import("mem.zig").MemProfile;
const testing = std.testing;
const panic = @import("panic.zig").panic;

View file

@ -6,7 +6,7 @@ const log = std.log.scoped(.scheduler);
const builtin = @import("builtin");
const is_test = builtin.is_test;
const build_options = @import("build_options");
const arch = @import("arch.zig").internals;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const panic = @import("panic.zig").panic;
const task = @import("task.zig");
const vmm = @import("vmm.zig");

View file

@ -1,4 +1,6 @@
const arch = @import("arch.zig").internals;
const builtin = @import("builtin");
const is_test = builtin.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const build_options = @import("build_options");
pub const Serial = struct {

View file

@ -2,7 +2,9 @@ const std = @import("std");
const scheduler = @import("scheduler.zig");
const panic = @import("panic.zig").panic;
const log = std.log.scoped(.syscalls);
const arch = @import("arch.zig").internals;
const builtin = @import("builtin");
const is_test = builtin.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
/// A compilation of all errors that syscall handlers could return.
pub const Error = error{OutOfMemory};

View file

@ -4,7 +4,7 @@ const expectError = std.testing.expectError;
const builtin = @import("builtin");
const is_test = builtin.is_test;
const build_options = @import("build_options");
const arch = @import("arch.zig").internals;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const panic = @import("panic.zig").panic;
const vmm = @import("vmm.zig");
const pmm = @import("pmm.zig");

View file

@ -3,7 +3,9 @@ const fmt = std.fmt;
const Allocator = std.mem.Allocator;
const log = std.log.scoped(.tty);
const build_options = @import("build_options");
const arch = @import("arch.zig").internals;
const builtin = @import("builtin");
const is_test = builtin.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const panic = @import("panic.zig").panic;
/// The OutStream for the format function

View file

@ -1,7 +1,5 @@
const build_options = @import("build_options");
const mock_path = build_options.mock_path;
const builtin = std.builtin;
const is_test = builtin.is_test;
const std = @import("std");
const log = std.log.scoped(.vmm);
const bitmap = @import("bitmap.zig");
@ -9,7 +7,9 @@ const pmm = @import("pmm.zig");
const mem = @import("mem.zig");
const tty = @import("tty.zig");
const panic = @import("panic.zig").panic;
const arch = @import("arch.zig").internals;
const builtins = @import("builtin");
const is_test = builtins.is_test;
const arch = if (is_test) @import("arch_mock") else @import("arch");
const Allocator = std.mem.Allocator;
const assert = std.debug.assert;