I'm currently extending the device registry
with a registry for drivers. It started as a simple idea
to solve the problem of displaying several drivers that
handle a single physical device. This is quite
complicated as I use one-value per /proc file, so a list
of values means creating a dynamic directory for
enumerating them. I thought of creating a directory per
driver and linking from them to the devices instead, which
turned out as being a great idea. This does not only allow
me to
make more information about the drivers available, but
moving the devfs node descriptors to the drivers solved
some problems with finding the right node of unusual
devices that have, for example, several nodes with the
same interface. Even more important, I can now add device
node ids that can be persistent identifiers of a physical
device's devfs node (or major/minor number). This will
make libdevreg much easier to use: if you want to find a
device node just use its id as an argument to the find
function. But even better, I now have an easy solution for
having stable minor numbers in the kernel. Just fill a
table (with the help of a /sbin/hotplug-style user space
program) that maps device node ids on minor numbers.
As a timeframe, I hope to have a version of devreg without
the stable minor number thing ready in two or three weeks.
I am also writing on a system similar to the minor number
thing but for major numbers with the major name instead of
the device node id. It will hopefully be ready at the
same time. This would solve Linus' decision of not
allowing any new major numbers as it moves the major
number location from the central register to the
user or his distribution. I haven't seen any other patch
doing this, which quite surprises me. However, I need this
code for the device node id / minor number mapping.