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.zig16
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(