diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-27 12:30:07 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-27 12:30:07 +0200 |
commit | fe16467ee3286d887a22aa3c1ed067478505bf4a (patch) | |
tree | 7a5658f34907e03e873e18f87bd6f9793c893769 | |
parent | be6bdf6e0cabad6708e5283669a642ab9bf28b6b (diff) |
syscall: Revert VFS hook /process/self/terminate => terminate() void (#60)
-rw-r--r-- | src/lib/resources.zig | 19 | ||||
-rw-r--r-- | src/lib/syscall.zig | 9 |
2 files changed, 9 insertions, 19 deletions
diff --git a/src/lib/resources.zig b/src/lib/resources.zig index 4a2ae7b..b345b84 100644 --- a/src/lib/resources.zig +++ b/src/lib/resources.zig @@ -53,14 +53,6 @@ const iofs = struct { const processfs = struct { const self = struct { - fn terminate(pid: u16, thread_id: usize, _: usize) callconv(.C) Result(usize) { - const proc = process.findThread(pid, thread_id).?; - proc.terminate(); - process.schedule() catch |err| { - std.debug.panic("Unable to schedule because all processes are terminated: {any}", .{err}); - }; - } - fn id(pid: u16, _: usize, _: usize) callconv(.C) Result(usize) { return Result(usize).fromAnyTypeOrError(pid); } @@ -274,17 +266,6 @@ fn provideProcess() !void { } fn provideProcessSelf() !void { - try vfs.provideResource("/process/self/terminate", .{ - .tag = .hook, - .data = .{ - .hook = .{ - .callback = processfs.self.terminate, - }, - }, - }, 0, .{ - .reclaimable = false, - }); - try vfs.provideResource("/process/self/id", .{ .tag = .hook, .data = .{ diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index a34ace4..3ce70a5 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -33,6 +33,7 @@ pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void { 100009 => read(proc, trap_frame), 100010 => write(proc, trap_frame), 100011 => list(proc, trap_frame), + 100012 => terminate(proc), else => return HandleError.UnknownSyscall, } } @@ -299,3 +300,11 @@ fn list(proc: *process.Info, trap_frame: *trap.Frame) void { const result = vfs.listZ(proc, path_c, entries[0..len]); sysexchange.frameReturn(null, trap_frame, result); } + +// terminate() void +fn terminate(proc: *process.Info) void { + proc.terminate(); + process.schedule() catch |err| { + std.debug.panic("Unable to schedule because all processes are terminated: {}", .{err}); + }; +} |