aboutsummaryrefslogtreecommitdiff
path: root/src/lib/syscall.zig
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-07-09 16:57:42 +0200
committerHimbeer <himbeer@disroot.org>2024-07-09 16:57:42 +0200
commit1224390526a195f464838d6550110691e40809e9 (patch)
tree6532f0bd6815860c0a3de66bb0ad046747c229bd /src/lib/syscall.zig
parent439fd6152386408a244fdcb035323cdbfba31461 (diff)
syscall: Implement mkdir
Diffstat (limited to 'src/lib/syscall.zig')
-rw-r--r--src/lib/syscall.zig10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig
index 3c01879..3d60776 100644
--- a/src/lib/syscall.zig
+++ b/src/lib/syscall.zig
@@ -23,7 +23,7 @@ pub fn handler(proc: *process.Info, trap_frame: *trap.Frame) !void {
100003 => provideStream(proc, trap_frame),
100004 => provideFile(proc, trap_frame),
100005 => provideHook(proc, trap_frame),
- 100006 => mkdir(trap_frame),
+ 100006 => mkdir(proc, trap_frame),
100007 => provideDirHook(proc, trap_frame),
100008 => remove(trap_frame),
100009 => read(proc, trap_frame),
@@ -137,11 +137,11 @@ fn provideHook(proc: *const process.Info, trap_frame: *trap.Frame) void {
// mkdir(
// path_c: [*:0]const u8, // fixme: Kernel panic if null pointer
// ) Result(void)
-fn mkdir(trap_frame: *trap.Frame) void {
+fn mkdir(proc: *const process.Info, trap_frame: *trap.Frame) void {
const path_c: [*:0]const u8 = @ptrFromInt(trap_frame.general_purpose_registers[10]);
-
- _ = path_c;
- unreachable;
+ sysexchange.frameReturn(null, trap_frame, vfs.provideResourceZ(path_c, .{
+ .dir = vfs.Tree.init(vfs.treeRoot().allocator),
+ }, proc.id));
}
// provideDirHook(