aboutsummaryrefslogtreecommitdiff
path: root/src/lib/syscall.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/syscall.zig')
-rw-r--r--src/lib/syscall.zig12
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;