diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-17 22:32:03 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-17 22:32:03 +0200 |
commit | ce729578bd4fbf4108ebcdeda8186d606d1c803e (patch) | |
tree | 33413f3cbb84f977fad53eeef055e811062ff630 /src/lib/vfs.zig | |
parent | b084e65f9f5d63b968081ecf82bf5d64d7d9f613 (diff) |
syscall: Replace terminate() with /process/self/terminate VFS hook
Diffstat (limited to 'src/lib/vfs.zig')
-rw-r--r-- | src/lib/vfs.zig | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/vfs.zig b/src/lib/vfs.zig index 71dda98..46f01d6 100644 --- a/src/lib/vfs.zig +++ b/src/lib/vfs.zig @@ -72,7 +72,7 @@ pub const File = extern struct { pub const Hook = extern struct { callback: Callback, - pub const Callback = *allowzero const fn (pid: u16, data: usize) callconv(.C) sysexchange.Result(usize); + pub const Callback = *allowzero const fn (pid: u16, thread_id: usize, data: usize) callconv(.C) sysexchange.Result(usize); }; // A directory hook is a resource that provides other resources via driver callbacks. @@ -380,8 +380,8 @@ fn call(proc: *process.Info, function: *const anyopaque, args: anytype, cleanup_ fn crossProcessReturn(context: *anyopaque, driver: *const process.Info) void { const proc: *process.Info = @alignCast(@ptrCast(context)); - proc.trap_frame.general_purpose_registers[10] = driver.trap_frame.general_purpose_registers[10]; - proc.trap_frame.general_purpose_registers[11] = driver.trap_frame.general_purpose_registers[11]; + proc.trap_frame.general_purpose_registers[10] = driver.trap_frame.general_purpose_registers[12]; + proc.trap_frame.general_purpose_registers[11] = driver.trap_frame.general_purpose_registers[13]; proc.pc += 4; // Skip ecall instruction proc.state = .waiting; // Scheduler is called by the "terminate" syscall after two layers of returning. |