diff options
Diffstat (limited to 'src/lib/syscall.zig')
-rw-r--r-- | src/lib/syscall.zig | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index c2457c6..55a7da3 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -13,11 +13,11 @@ pub const Error = error{ UnknownSyscall, }; -pub fn handle(proc: *process.Info, trap_frame: *trap.Frame) !void { +pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void { switch (trap_frame.general_purpose_registers[17]) { 100000 => uprint(trap_frame), 100001 => open(proc, trap_frame), - 100002 => close(trap_frame), + 100002 => close(proc, trap_frame), 100003 => provideStream(trap_frame), 100004 => provideFile(trap_frame), 100005 => provideHook(trap_frame), @@ -52,19 +52,17 @@ fn open(proc: *process.Info, trap_frame: *trap.Frame) void { }; switch (user_info) { .rd => |resource_descriptor| { - const maybe_handle = proc.makeRdHandle(resource_descriptor); + const maybe_handle = proc.createRdHandle(resource_descriptor); sysexchange.frameReturn(null, trap_frame, maybe_handle); }, .value => |value| sysexchange.frameReturnResult(usize, trap_frame, value), } } -// close(rd: usize) void -fn close(trap_frame: *const trap.Frame) void { - const rd = trap_frame.general_purpose_registers[10]; - - _ = rd; - unreachable; +// close(handle: usize) void +fn close(proc: *process.Info, trap_frame: *const trap.Frame) void { + const handle = trap_frame.general_purpose_registers[10]; + proc.destroyRdHandle(handle); } // provideStream( |