From eb2f777e0c1bd727b6064d5f0623790ca341d6df Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sun, 21 Sep 2025 19:15:04 -0400 Subject: kern: vfs: Add lookup by name helper Signed-off-by: Ian Moffett --- src/sys/include/os/vfs.h | 11 +++++++++++ src/sys/os/vfs_init.c | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/sys/include/os/vfs.h b/src/sys/include/os/vfs.h index a46bb18..e08a9f0 100644 --- a/src/sys/include/os/vfs.h +++ b/src/sys/include/os/vfs.h @@ -42,6 +42,17 @@ */ int vfs_init(void); +/* + * Get a VFS file table entry by name + * + * @name: Name of desired entry + * @resp: Result pointer is written here + * + * Returns zero on success, otherwise a less than zero + * value upon failure. + */ +int vfs_by_name(const char *name, struct fs_info **resp); + /* * Get a VFS file table entry by index. * diff --git a/src/sys/os/vfs_init.c b/src/sys/os/vfs_init.c index b40b74d..496fb67 100644 --- a/src/sys/os/vfs_init.c +++ b/src/sys/os/vfs_init.c @@ -32,6 +32,7 @@ #include #include #include +#include /* * The filesystem table @@ -40,6 +41,31 @@ static struct fs_info fstab[] = { { MOUNT_INITRD, &g_omar_vfsops, 0 } }; +/* + * Get entry by name + */ +int +vfs_by_name(const char *name, struct fs_info **resp) +{ + size_t nelem; + int retval = -ENOENT; + + if (name == NULL || resp == NULL) { + return -EINVAL; + } + + nelem = NELEM(fstab); + for (int i = 0; i < nelem; ++i) { + if (strcmp(fstab[i].name, name) == 0) { + *resp = &fstab[i]; + retval = 0; + break; + } + } + + return retval; +} + /* * Get entry by index */ -- cgit v1.2.3