summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-05-13 20:54:22 -0400
committerIan Moffett <ian@osmora.org>2025-05-13 21:04:47 -0400
commitdb3b1592ea1248afc6b4f95bb8dfb05c00588c9d (patch)
treed5bdacf03e6e57243b6b1e479b860d3885d86d0b /sys/kern
parenteeadc35f7edf7181b44e32f35dfccf83e7beb917 (diff)
kernel: fs: Introduce ctlfs
ctlfs (Control FS) is a filesystem aimed to provide configuration of devices separate from their respective devices files. Most UNIX-like systems rely on the ioctl() mechanism for sending commands to device drivers, while this certainly works, it is important to realize how messy it can get having massive switch cases per driver. ctlfs fixes this by giving each device a "node" in ctlfs that contains several control files. For example, imagine we have a SCSI device (/dev/sd1). Its ctlfs counterpart would be a directory at /ctl/sd1/. For an hdd this may contain files such as: /ctl/sd1/bsize # Block size if read (mode [rwx]: -w-) /ctl/sd1/cmd # Command if written, status if read (mode [rwx]: rw-) ... et cetera Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_init.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c
index caa0766..8c1bc74 100644
--- a/sys/kern/vfs_init.c
+++ b/sys/kern/vfs_init.c
@@ -36,7 +36,8 @@
struct vnode *g_root_vnode = NULL;
static struct fs_info fs_list[] = {
{MOUNT_RAMFS, &g_initramfs_vfsops, 0, 0},
- {MOUNT_DEVFS, &g_devfs_vfsops, 0, 0}
+ {MOUNT_DEVFS, &g_devfs_vfsops, 0, 0},
+ {MOUNT_CTLFS, &g_ctlfs_vfsops, 0, 0}
};
void