|
|
|
|
|
by kogepathic
3147 days ago
|
|
> Is it technically possible to write a driver in Rust and add it to the kernel in a reasonable way? That is, without gobs of fragile shims, etc. I think this is highly unlikely. The Linux kernel lacks an internal ABI [0] which would make writing drivers in a different language and targeting them at multiple kernel releases essentially impossible. Many, many people and organizations writing drivers have complained over the years about the lack of an internal ABI. [1] [2] I would go so far as to say it's why Linux on ARM is such a dumpster fire. SoC vendors provide an SDK based on a certain kernel, and OEMs forever ship this kernel (with occasional backports for really severe bugs) because porting the device-specific changes to a newer kernel is just too much effort. [0] https://en.wikipedia.org/wiki/Linux_kernel_interfaces [1] https://stackoverflow.com/questions/827862/why-i-need-to-re-... [2] https://news.ycombinator.com/item?id=9220973 |
|
Basically, it transforms Linux into a kind of microkernel, with drivers being implemented on their own processes, using shared memory APIs to talk with the kernel, based on an IDL (Interface Description Language).
https://source.android.com/devices/architecture/hidl/