aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-20 18:49:28 +0200
committerHimbeer <himbeer@disroot.org>2024-07-20 18:49:28 +0200
commitf62209d61bede0838a4f67f5ed4b4272978fe358 (patch)
tree9ec955ca0b0a813bef15c1960d711491f10da820
parent40b8a20b0e522cd75f9bb7e54c326a6e9e92f23d (diff)
resources: Add /process/self/{id,thread_id} VFS hooks
-rw-r--r--src/lib/resources.zig30
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 {