summaryrefslogtreecommitdiff
path: root/sys/kern/vfs_mount.c
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-11-21 12:51:59 -0500
committerIan Moffett <ian@osmora.org>2025-11-21 12:52:57 -0500
commitf95dcdd6179cc05aea6cf9ed83c94d7259d0f460 (patch)
treea8b8f105427d57a126218099255e3356f3be46f3 /sys/kern/vfs_mount.c
parentda0c894f9f0b045d629d6dd1448274bf39becd52 (diff)
kern: vfs: Add initial mountpoint lookup helper
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern/vfs_mount.c')
-rw-r--r--sys/kern/vfs_mount.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index 909a618..02c7308 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -35,6 +35,7 @@
#include <os/mount.h>
#include <kern/vfs.h>
#include <lib/stdbool.h>
+#include <lib/string.h>
#include <vm/kalloc.h>
/*
@@ -114,3 +115,40 @@ mount(struct mount_args *margs)
spinlock_release(&mount_lock, false);
return 0;
}
+
+/*
+ * XXX: Currently we are looking up entries by the fstype.
+ * This must be updated to actual name-based lookups
+ * in future revisions of rv7
+ */
+int
+mount_lookup(const char *name, struct mount **mres)
+{
+ struct fs_info *fip;
+ struct mount *iter, *mount = NULL;
+
+ if (name == NULL || mres == NULL) {
+ return -EINVAL;
+ }
+
+ spinlock_acquire(&mount_lock, false);
+ TAILQ_FOREACH(iter, &mountlist, link) {
+ fip = iter->fip;
+ if (__likely(*name != *fip->name)) {
+ continue;
+ }
+
+ if (strcmp(fip->name, name) == 0) {
+ mount = iter;
+ break;
+ }
+ }
+
+ spinlock_release(&mount_lock, false);
+ if (mount == NULL) {
+ return -ENOENT;
+ }
+
+ *mres = mount;
+ return 0;
+}