On binary drivers and stable interfaces
Posted Nov 10, 2005 17:14 UTC (Thu) by iabervon
Parent article: On binary drivers and stable interfaces
The kernel's always had one stable ABI, which has gotten only minor if any incompatible changes ever: the interface to userspace. There's also been a push towards moving more and more capabilities into userspace. The USB scanner on the computer I'm sitting at only needs userspace drivers, for example. Jeff Garzik was just talking about block device implementations in userspace, there's discussion of filesystems in userspace, TTYs should be pretty easy, since there aren't so many deadlock possibilities, and most other stuff isn't done with a kernel API, so it's looking good on the regular-userpsace-API side. USB devices can already be handled from userspace, and I think that SCSI devices can mostly be.
It seems to me that it would be good to have a stable ABI for drivers, where that ABI doesn't let you mess with things you shouldn't, doesn't let you arbitrarily mess with the kernel, and isn't used by in-kernel drivers (although it may be used by open-source projects that want to, like hpoj currently). This obviously won't work well for all types of device, because interrupt latency won't be great, but it should suffice for letting binary drivers exist much like binary executables do. It also means that all of the interaction between the driver and the hardware is going through kernel code, so you don't need to probe the bus to find out exactly what the driver does to make the hardware work.
to post comments)