On Fri, 26 Feb 2010, Izumi Tsutsui wrote: > Are you talking about ABI of kernel modules?
That's actually the problem. We have a kernel driver API, but we do not have a kernel driver ABI. Things like bus_space and bus_dma are progamming interfaces but the specific implementation of the interfaces is left to the reader. Most of the time they are implemented as a set of macros that operate on data structures hiddend by other macros, due to performance claims. Until each platform defines an interface in terms of specific entry points and parameters explitly laid out in registers or memory, you don't really have an ABI. Has anybody actually gone through the kernel code and defined a specific set of routines for use by drivers, or is it still open season for anything in the kernel? I don't recall having seen anything like that. (Adding some sort of versioning to the interfaces would also be good, that way a kernel could refuse to load an old, incompatible module, or better yet, redirect the module interfaces through compatibility glue.) Eduardo
