config fs: I'm planning to abandon my proc fs
changes in a future version and instead write new
filesystem based on the proc fs code. Proc FS is a mess.
While most of the files
in /proc are quite convenient to read for human readers
they are almost unusuable for software. The problem is not
that parsing would be so difficult but that it is
impossible to add new fields once you have defined a text
format without breaking all software that reads it. Binary
files suffer from the same compatibility problems. A few
months ago several people convinced me on LKML to go the
"one-value-per-file" way for devreg, and the new
filesystem will enforce this even more than my proc fs
extensions. Every file will be strictly typed (string,
enum), dynamic directories will be possible, the type of a
can be retrieved using ioctls, and unlike my current proc
changes writing will be supported, too.
The more interesting part of the plan is that I want to support both persistent and non-persistent files. So there will be some daemon waiting, similar to devfsd, for files that have been flagged as persistent and will then store their new values when they have been changed. On initialization of a file the daemon will fill it with a previously stored value. Dynamic directories can have keys that can be used to find the correct one. I'm currently calling this concept config fs. Beside the replacement of proc fs for everything but processes it can be used for the configuration of the kernel and drivers. The current way of configuration definitely sucks, module options are a bad idea for most purposes because you cannot change them at runtime and they are not very useful if your driver handles several devices at the same time. They can only be used for the driver's global configuration, but not for the configuration of driver instances. IMHO module options should disappear for anything but boot-time configuration. The only frightening thing about the config fs idea is how close it is to Win2k's registry. It's a little bit less arcane because you can access it as a filesystem, but beside that there are only few differences between them. It could even make sense to use it for the general configuration of system software. bah...