Consider making a post on the forums (https://forums.xamarin.com/categories/mac) as a full discussion in comments is a bit tight.
If you are passing a callback, it’s like like passing any other C# method via p/invoke. IOKit is C here, so you can treat it the same way (make delegate that declares the type of function, etc).
The standard .NET build system always does a complication pass when converting your C#/F# code from .cs files to binaries (.dll or .exe). It parses your code, converts it into IL (https://en.wikipedia.org/wiki/Common_Intermediate_Language).
The “normal” .NET execution model then loads these binaries into memory and compiles…
See — https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1/#AOT_support
Xamarin.Mac’s support was based almost completely on work done for Xamarin.Android (if you comb the release notes, you’ll see a bunch of AOT bug fixes).