We conducted a test in our legacy KEXT environment, and the results indicate a behavioral difference between the KEXT and DriverKit frameworks in handling I/O requests. So, the first thing to understand is that IOKit and DriverKit are NOT fundamentally different/separate technologies. The best way to understand DriverKit is that it's implemented as a very specialized user client built on to our existing IOKit infrastructure. Note that this dynamic is quite direct- for example, a DEXT's IOKitPersonalities dictionary doesn't just look like an IOKit match dictionary, it IS an IOKit matching dictionary. How DEXT loading/matching actually works is: The matching dictionary is added into the kernels KEXT matching set just like any KEXT would be. When hardware is attached, that matching dictionary is used to match and load an in kernel driver in EXACTLY the same way ANY other KEXT would be. Once the kernel driver finishes loading, the system then uses the DEXT keys inside that matching dictionary to create your DEXT
Topic:
App & System Services
SubTopic:
Drivers
Tags: