aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-03 13:20:25 +0200
committerHimbeer <himbeer@disroot.org>2024-07-03 13:20:25 +0200
commitbff30d54233ba53560029e43dd4fd3e74cb86fcd (patch)
tree945e96b207accad34b7f80c5b714e5c3786a7d76
parent892245e3eac32d8237cb4f851ae72b3d887e1e9d (diff)
syscall: Supply VFS resource providing functions with provider PID
-rw-r--r--src/lib/syscall.zig24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig
index 715bcdb..c800ef0 100644
--- a/src/lib/syscall.zig
+++ b/src/lib/syscall.zig
@@ -24,11 +24,11 @@ pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void {
100000 => uprint(trap_frame),
100001 => open(proc, trap_frame),
100002 => close(proc, trap_frame),
- 100003 => provideStream(trap_frame),
- 100004 => provideFile(trap_frame),
- 100005 => provideHook(trap_frame),
+ 100003 => provideStream(proc, trap_frame),
+ 100004 => provideFile(proc, trap_frame),
+ 100005 => provideHook(proc, trap_frame),
100006 => mkdir(trap_frame),
- 100007 => provideDirHook(trap_frame),
+ 100007 => provideDirHook(proc, trap_frame),
100008 => remove(trap_frame),
100009 => read(proc, trap_frame),
100010 => write(proc, trap_frame),
@@ -82,7 +82,7 @@ fn close(proc: *process.Info, trap_frame: *const trap.Frame) void {
// readFn: ?vfs.Stream.ReadFn,
// writeFn: ?vfs.Stream.WriteFn,
// ) Result(void)
-fn provideStream(trap_frame: *trap.Frame) void {
+fn provideStream(proc: *const process.Info, trap_frame: *trap.Frame) void {
setUserMemoryAccess(true);
defer setUserMemoryAccess(false);
@@ -95,7 +95,7 @@ fn provideStream(trap_frame: *trap.Frame) void {
.readFn = readFn,
.writeFn = writeFn,
},
- }));
+ }, proc.id));
}
// provideFile(
@@ -105,7 +105,7 @@ fn provideStream(trap_frame: *trap.Frame) void {
// writeFn: ?vfs.File.WriteFn,
// closeFn: ?vfs.File.CloseFn,
// ) Result(void)
-fn provideFile(trap_frame: *trap.Frame) void {
+fn provideFile(proc: *const process.Info, trap_frame: *trap.Frame) void {
setUserMemoryAccess(true);
defer setUserMemoryAccess(false);
@@ -122,14 +122,14 @@ fn provideFile(trap_frame: *trap.Frame) void {
.writeFn = writeFn,
.closeFn = closeFn,
},
- }));
+ }, proc.id));
}
// provideHook(
// path_c: [*:0]const u8, // fixme: Kernel panic if null pointer
// callback: vfs.Hook.Callback,
// ) Result(void)
-fn provideHook(trap_frame: *trap.Frame) void {
+fn provideHook(proc: *const process.Info, trap_frame: *trap.Frame) void {
setUserMemoryAccess(true);
defer setUserMemoryAccess(false);
@@ -140,7 +140,7 @@ fn provideHook(trap_frame: *trap.Frame) void {
.hook = .{
.callback = callback,
},
- }));
+ }, proc.id));
}
// mkdir(
@@ -162,7 +162,7 @@ fn mkdir(trap_frame: *trap.Frame) void {
// findFn: vfs.DirHook.FindFn,
// removeFn: vfs.DirHook.RemoveFn,
// ) Result(void)
-fn provideDirHook(trap_frame: *trap.Frame) void {
+fn provideDirHook(proc: *const process.Info, trap_frame: *trap.Frame) void {
setUserMemoryAccess(true);
defer setUserMemoryAccess(false);
@@ -177,7 +177,7 @@ fn provideDirHook(trap_frame: *trap.Frame) void {
.findFn = findFn,
.removeFn = removeFn,
},
- }));
+ }, proc.id));
}
// remove(path_c: [*:0]const u8) Result(void) // fixme: Kernel panic if null pointer