Hi, I just wanted to give a short (PS: or actually not-so-short) status update in case anyone is interested on how devfs is going.
If you decide for whatever (insane) reason to try the code (which is in my repository, branch devfs, and will be broken more often than working) please do so in a vkernel to avoid real damage and don't be put off by the tons of debug kprintfs that will render your screen completely unreadable :) Also please don't expect me to write useful commit messages in my repository. While I try to give relevant information, they are mostly condensed 1-liners due to the fact that I commit a bit every few minutes. Don't take this as a full list, I'm probably forgetting half of the stuff, both on what works and on what isn't working. What works: - major numbers don't exist anymore (always zero; minor is kept) - /dev is mounted just after the root file system - devfs provides everything mountroot needs - vkernel boots up correctly and is usable - ttyname() and devname() work correctly - dynamically adding devices - using the devices (read, write, ioctl, poll, kqueue) works fine - using ls, rm and ln -s works (mkdir, rmdir, mknod and similar others are not on my to-do list; There is in-kernel support in devfs for creating paths and dynamically destroying empty directories and harvesting unused links (although only those created from inside the kernel, not using ln); mknod makes no sense anymore) What doesn't work yet: - dynamically removing devices - reloading partitions / slices on repartitioning of disks - proper security to avoid opening raw partitions when something uses it (e.g. because some sub-partition is mounted) - closing disks and destroying them - special handling / access control inside jails - possibly some disk devices due to setting the needed diskinfo at open instead of at disk creation. - possibly some other devices due to yet unknown issues (including vinum or others). - possibly disk partitioning and labeling - setroot() in autoconf. Whatever it does, it will definitely not work yet due to its use of makeudev. - same as before goes for a part of the linux emulation layer (sys_linux_ustat). - console muting (disabled when I changed the way tty_cons.c works; will enable it again later. If I have time, I might enable the option to use multiple console devices) - The promised devfs userland daemon is still non-existant What will be changed from how it works now: - correct some of the locking inside devfs (possibly replace lockmgr by tokens?) - avoid using mplock for device access through devfs - probably should add some sort of reference counting to keep track of active devices? Just as a curious fact: a...@alex-laptop:~/src/dragonfly/src/sys$ git diff master | wc -l 5931 Sincerely, Alex Hornung
