diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/syscall.zig | 5 | ||||
-rw-r--r-- | src/lib/vfs.zig | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index 7c70bd6..d2aaca3 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -180,6 +180,7 @@ fn mkdir(proc: *const process.Info, trap_frame: *trap.Frame) void { // options: *const vfs.Options, // fixme: Kernel panic if null pointer // provideFn: vfs.DirHook.ProvideFn, // findFn: vfs.DirHook.FindFn, +// listFn:vfs.DirHook.ListFn, // removeFn: vfs.DirHook.RemoveFn, // ) Result(void) fn provideDirHook(proc: *const process.Info, trap_frame: *trap.Frame) void { @@ -190,13 +191,15 @@ fn provideDirHook(proc: *const process.Info, trap_frame: *trap.Frame) void { const options: *const vfs.Options = @ptrFromInt(trap_frame.general_purpose_registers[11]); const provideFn: vfs.DirHook.ProvideFn = @ptrFromInt(trap_frame.general_purpose_registers[12]); const findFn: vfs.DirHook.FindFn = @ptrFromInt(trap_frame.general_purpose_registers[13]); - const removeFn: vfs.DirHook.RemoveFn = @ptrFromInt(trap_frame.general_purpose_registers[14]); + const listFn: vfs.DirHook.ListFn = @ptrFromInt(trap_frame.general_purpose_registers[14]); + const removeFn: vfs.DirHook.RemoveFn = @ptrFromInt(trap_frame.general_purpose_registers[15]); sysexchange.frameReturn(null, trap_frame, vfs.provideResourceZ(path_c, .{ .tag = .dir_hook, .data = .{ .dir_hook = .{ .provideFn = provideFn, .findFn = findFn, + .listFn = listFn, .removeFn = removeFn, } }, }, proc.id, options.*)); diff --git a/src/lib/vfs.zig b/src/lib/vfs.zig index eb70d56..16a793c 100644 --- a/src/lib/vfs.zig +++ b/src/lib/vfs.zig @@ -82,10 +82,12 @@ pub const Hook = extern struct { pub const DirHook = extern struct { provideFn: ProvideFn, findFn: FindFn, + listFn: ListFn, removeFn: RemoveFn, pub const ProvideFn = *allowzero const fn (name_ptr: [*]const u8, name_len: usize, inode: Inode) callconv(.C) sysexchange.Result(void); pub const FindFn = *allowzero const fn (name_ptr: [*]const u8, name_len: usize) callconv(.C) ?*Inode; + pub const ListFn = *allowzero const fn (inodes_ptr: [*]Inode, inodes_len: usize) callconv(.C) sysexchange.Result(usize); pub const RemoveFn = *allowzero const fn (name_ptr: [*]const u8, name_len: usize) callconv(.C) sysexchange.Result(void); }; |