What Device Drivers are in macOS? How are they different?

I am researching the drivers in macOS. Apple Developer lists that the Default Drivers are ApplePlatformExpert, IODTPlatformExpert, IOPlatformExpert, and the Apple Drivers are IODTNVRAM, AppleMacIO, AppleMacIODevice, AppleNMI. What are these drivers and how are they different?

I am researching the drivers in macOS.

To what end?

The macOS driver architecture is old and complex, and it’s not something that I’m able to explain in detail here on DevForums. However, if you can give me some idea of your overall goal I may be able to point you to relevant resources.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Sorry for bumping up this old thread but I'm also curious about the architecture.

For example, the logical relationship, or the actual relationship of bits moving here and there, remains mysterious to me.

Questions could be: How do they interact with each other? Do any of them have priority over others? How do they interface with the networking stack? etc.

Your questions are very general and so it’s hard to answer them in the limited time I have here on DevForums. If you’re curious about the high-level architecture used by Apple’s platforms, I recommend that you read Mac OS X Internals: A System Approach, by Singh. It’s really old, but a lot of the fundamentals haven’t changed, or have changed in a way that’s easier to understand once you understand the old mechanism (for example, DriverKit vs I/O Kit).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thanks, I'll take a look. Are there any gotchas though with the transition away from kexts, I/O kit, etc., to the new system? i.e. where expected behavior implied from the book would be the opposite of actual behavior

Are there any gotchas though with the transition away from kexts, I/O kit, etc., to the new system?

Yes. But, again, this is too general a question to reasonably answer here on DevForums. DriverKit is conceptually very close to I/O Kit but there’s a lot going on under the covers to make it work at all.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

What Device Drivers are in macOS? How are they different?
 
 
Q