diff options
author | Ian Moffett <ian@osmora.org> | 2025-05-13 20:54:22 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-05-13 21:04:47 -0400 |
commit | db3b1592ea1248afc6b4f95bb8dfb05c00588c9d (patch) | |
tree | d5bdacf03e6e57243b6b1e479b860d3885d86d0b /sys/kern | |
parent | eeadc35f7edf7181b44e32f35dfccf83e7beb917 (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.c | 3 |
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 |