The Kernel's API and ABI exposed to Kernel modules is not something
that is usually maintained in upstream. Deliberately. In fact, the
ability to break APIs and ABIs can greatly benefit the development.
Good reasons for that have been stated multiple times. See e.g.
The reality for distributions might look different though. Especially
- but not exclusively - enterprise distributions aim to guarantee ABI
stability for the lifetime of their released kernels while constantly
consuming upstream patches to improve stability and security for said
kernels. Their customers rely on both: upstream fixes and the ability
to use the released kernels with out-of-tree modules that are compiled
and linked against the stable ABI.
In this talk I will give a brief overview about how this very same
requirement applies to the Kernels that are part of the Android
distribution. The methods presented here are reasonable measures to
reduce the complexity of the problem by addressing issues introduced
by ABI influencing factors like build toolchain, configurations, etc.
While we focus on Android Kernels, the tools and mechanisms are
generally useful for Kernel distributors that aim for a similar level
of stability. I will talk about the tools we use (like e.g.
libabigail), how we automate compliance checking and eventually
enforce ABI stability.
|I agree to abide by the anti-harassment policy||Yes|