diff options
author | dzwdz | 2021-11-16 20:45:13 +0100 |
---|---|---|
committer | dzwdz | 2021-11-16 20:45:13 +0100 |
commit | f9f1795a754c57d6d148e202dbc7864576cf2d47 (patch) | |
tree | 3b6129be8262164b4b2273187797601d5d18b469 | |
parent | f2591b500c19cddee59edcf80a5ccdffc3ba3585 (diff) |
init: implement fork2_n_mount
-rw-r--r-- | src/init/fs/misc.c | 8 | ||||
-rw-r--r-- | src/init/fs/misc.h | 3 | ||||
-rw-r--r-- | src/init/main.c | 7 |
3 files changed, 13 insertions, 5 deletions
diff --git a/src/init/fs/misc.c b/src/init/fs/misc.c index a8d9517..55d14fa 100644 --- a/src/init/fs/misc.c +++ b/src/init/fs/misc.c @@ -1,7 +1,15 @@ +#include <init/fs/misc.h> #include <init/stdlib.h> #include <shared/flags.h> +#include <shared/mem.h> #include <shared/syscalls.h> +bool fork2_n_mount(const char *path) { + handle_t h = _syscall_fs_fork2(); + if (h) _syscall_mount(h, path, strlen(path)); + return h; +} + void fs_passthru(void) { struct fs_wait_response res; int buf_size = 64; diff --git a/src/init/fs/misc.h b/src/init/fs/misc.h index c7ce7c7..87d5bdb 100644 --- a/src/init/fs/misc.h +++ b/src/init/fs/misc.h @@ -1,3 +1,6 @@ #pragma once +#include <stdbool.h> + +bool fork2_n_mount(const char *path); void fs_passthru(void); diff --git a/src/init/main.c b/src/init/main.c index 8ddbe6d..f0c9779 100644 --- a/src/init/main.c +++ b/src/init/main.c @@ -43,12 +43,9 @@ void fs_prep(void) { * TODO actually write tests */ _syscall_mount(front, argify("/init/")); + /* from here on i'll just use the helper func fork2_n_mount */ /* passthrough fs */ - front = _syscall_fs_fork2(); - if (!front) { + if (!fork2_n_mount("/2nd")) fs_passthru(); - _syscall_exit(1); /* unreachable */ - } - _syscall_mount(front, argify("/2nd")); } |