Questions related to the development of macOS/Darwin kernel extensions, including both the generic (C) and I/O Kit (C++) kinds.
Extensions to the macOS/Darwin "xnu" kernel are packaged in the form of loadable modules. These are commonly referred to as "kexts", after the folder extension.
Two types of kernel extensions exist:
- Extensions written in C, primarily against the BSD and Mach APIs. This format is typically used for networking-related extensions and file systems.
- Extensions written in C++ against the I/O Kit API. This format is most common for device drivers and extensions that directly communicate with device drivers.
Not to be confused with DriverKit drivers and "System Extensions", neither of which run in a kernel context.