DragonFly kernel List (threaded) for 2009-06
DragonFly BSD
DragonFly kernel List (threaded) for 2009-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Status of devfs (gsoc 2009)

From: Alex Hornung <ahornung@xxxxxxxxx>
Date: Fri, 05 Jun 2009 16:02:07 +0100

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

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
- 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
- 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:
alex@alex-laptop:~/src/dragonfly/src/sys$ git diff master | wc -l


Alex Hornung

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]