diff options
Diffstat (limited to 'src/lib/syscall.zig')
-rw-r--r-- | src/lib/syscall.zig | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index 19e4f38..0edd367 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -5,11 +5,11 @@ const std = @import("std"); const Console = @import("Console.zig"); +const TrapFrame = @import("TrapFrame.zig"); const instructions = @import("instructions.zig"); const mem = @import("mem.zig"); const paging = @import("paging.zig"); const process = @import("process.zig"); -const trap = @import("trap.zig"); pub const Error = error{ Unimplemented, @@ -20,7 +20,7 @@ pub const HandleError = error{ UnknownSyscall, }; -pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void { +pub fn handler(proc: *process.Info, trap_frame: *TrapFrame) !void { switch (trap_frame.general_purpose_registers[17]) { 100000 => trap_frame.setReturnValue(errorName(trap_frame)), 100001 => trap_frame.setReturnValue(consoleWrite(trap_frame)), @@ -36,7 +36,7 @@ pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void { pub const ErrorNameError = error{ErrorOutOfRange}; // errorName(value: usize, buffer: [*]u8, len: usize) !usize -fn errorName(trap_frame: *const trap.Frame) !usize { +fn errorName(trap_frame: *const TrapFrame) !usize { const value_wide = trap_frame.general_purpose_registers[10]; const buffer_opt: ?[*]u8 = @ptrFromInt(trap_frame.general_purpose_registers[11]); const buffer_ptr = buffer_opt orelse return Error.ZeroAddressSupplied; @@ -61,7 +61,7 @@ fn errorName(trap_frame: *const trap.Frame) !usize { } // consoleWrite(bytes_addr: usize, len: usize) !usize -fn consoleWrite(trap_frame: *const trap.Frame) !usize { +fn consoleWrite(trap_frame: *const TrapFrame) !usize { const vaddr = trap_frame.general_purpose_registers[10]; const len = trap_frame.general_purpose_registers[11]; @@ -82,7 +82,7 @@ fn consoleWrite(trap_frame: *const trap.Frame) !usize { } // launch(bytes: [*]align(@alignOf(std.elf.Elf64_Ehdr)) const u8, len: usize) !usize -fn launch(trap_frame: *const trap.Frame) !usize { +fn launch(trap_frame: *const TrapFrame) !usize { const alignment = @alignOf(std.elf.Elf64_Ehdr); const bytes_addr = trap_frame.general_purpose_registers[10]; const bytes_opt: ?[*]align(alignment) const u8 = @ptrFromInt(bytes_addr); @@ -112,7 +112,7 @@ pub const TerminateError = error{ }; // terminate(pid: u16, tid: usize) !void -fn terminate(proc: *const process.Info, trap_frame: *const trap.Frame) !void { +fn terminate(proc: *const process.Info, trap_frame: *const TrapFrame) !void { const pid_wide = trap_frame.general_purpose_registers[10]; const pid = std.math.cast(u16, pid_wide) orelse { return TerminateError.PidOutOfRange; |