diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-20 18:49:28 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-20 18:49:28 +0200 |
commit | f62209d61bede0838a4f67f5ed4b4272978fe358 (patch) | |
tree | 9ec955ca0b0a813bef15c1960d711491f10da820 | |
parent | 40b8a20b0e522cd75f9bb7e54c326a6e9e92f23d (diff) |
resources: Add /process/self/{id,thread_id} VFS hooks
-rw-r--r-- | src/lib/resources.zig | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/resources.zig b/src/lib/resources.zig index 769de4f..5c19aa2 100644 --- a/src/lib/resources.zig +++ b/src/lib/resources.zig @@ -55,6 +55,14 @@ const processfs = struct { 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); + } + + fn threadId(_: u16, thread_id: usize, _: usize) callconv(.C) Result(usize) { + return Result(usize).fromAnyTypeOrError(thread_id); + } }; const CreationContext = struct { @@ -231,6 +239,28 @@ fn provideProcessSelf() !void { }, 0, .{ .reclaimable = false, }); + + try vfs.provideResource("/process/self/id", .{ + .tag = .hook, + .data = .{ + .hook = .{ + .callback = processfs.self.id, + }, + }, + }, 0, .{ + .reclaimable = false, + }); + + try vfs.provideResource("/process/self/thread_id", .{ + .tag = .hook, + .data = .{ + .hook = .{ + .callback = processfs.self.threadId, + }, + }, + }, 0, .{ + .reclaimable = false, + }); } fn addFile(path: []const u8, file: File) !void { |