3 ms·
> I am not 100% accepting the ABI argument the drivers in the Linux kernel are not getting rewriting every release, sometimes there are changes and I don’t know
by klodolph 7y ago
> I am not 100% accepting the ABI argument the drivers in the Linux kernel are not getting rewriting every release, sometimes there are changes and I don’t know if applying those changes to drivers is such a burden otherwise the kernel will be always broken
I think you may be mixing up “ABI” and “API”. If you change internal kernel APIs, you’d break a lot of code and have to go in and fix it. If you change the ABI, you just have to recompile. The ABI does change pretty often and as a rule of thumb there is no effort to keep it stable, the way you would if you were writing a shared library (which ideally has both a stable API and ABI). Drivers in the kernel are not broken because they are recompiled with the rest of the kernel. Kernel modules from different kernel versions ARE broken and this is why we have DKMS.
But just to talk about what happens here—Apple is the only developer of the XNU kernel, and they have a fairly short list of iOS SKUs in the history of iOS, and only a small portion of those get iOS 13 support—something like 12 iPhone models. So the support for all of these devices is right on the mainline kernel development tree.
This is not how Android development works. You generally have a bunch of different manufacturers, who get a team of engineers to get a fork of the Linux kernel working on each device, and then they drop it and move on to the next one. There will be various binary blobs involved, and integrating the changes back upstream or downstream ends up being a pain.
And just to return to the original point, the Linux kernel developers are actively hostile to any attempts to make the kernel ABI stable enough for binary blob drivers to work. This is not a question about whether it is technically possible.
- pjmlp 7y agoAndroid has a stable ABI, it is called Treble HAL.