Exactly right. Often for devices, but also for software (usually enterprise). Here is a list of kernal extensions compiled by the macadmins community: https://docs.google.com/spreadsheets/d/1IWrbE8xiau4rU2mtXYji...
I think kernel modules will go away at some point. Having no third party Kexts would increase the security of the OS for in use systems. That's a nice way of saying not all third-party Kexts are created equal.
I could see an argument where moving existing hardware Kexts to user space is easier because IOKit uses the libkern C++ Runtime. The OO design of IOKit may lend itself very nicely to the driver approach BarrelFish takes (http://www.barrelfish.org). The real hard one to move to user space would be third-party filesystems. That's mainly because of dated VFS architecture used in *NIX systems. I could see Apple completely moving away from that at a future point too.
I found Serial[1] a while ago: a decent terminal application that does not require any drivers / kernel modules to support USB-to-serial devices.
I wonder how that works?
macOS comes with very good USB support in user-space that works without any drivers.
https://developer.apple.com/documentation/iokit/iousbinterfa...
Re:The libkern C++ Runtime
by blattimwind on Thursday July 12, 2018 @04:40AM
(#17513055)
libusb or a similar userspace USB construct? You don't need anything privileged to write an USB device driver.
For example USB to Serial devices, or custom media devices, and more. I really don't expect kernel modules to go away.