MAC API "mac_iokit_check_device" を実装しようとしている MAC (Mandatory Access Control) ポリシー モジュールを開発しようとしています。mac_iokit_check_device API を実装する MAC ポリシー モジュール kext を構築でき、kext をロードできます。しかし、このポリシーモジュール API を利用するドライバー kext には問題があります。正常にコンパイルされています。しかし、シンボル「_mac_iokit_check_device」を解決できません。私が使用したドライバ kext の依存ライブラリは次のとおりです。
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOUSBFamily</key>
<string>5.5.5</string>
<key>com.apple.kpi.mach</key>
<string>12.3</string>
<key>com.apple.kpi.unsupported</key>
<string>12.3</string>
<key>com.apple.kpi.iokit</key>
<string>12.3</string>
<key>com.apple.kpi.libkern</key>
<string>12.3</string>
<key>com.apple.kpi.bsd</key>
<string>12.3</string>
<key>com.apple.kpi.dsep</key>
<string>12.3</string>
</dict>
不思議なことに、どの kpi ライブラリもシンボル _mac_iokit_check_device を定義していないようです。コマンドを実行してこれを推測しました
find /System/Library/Extensions/System.kext/PlugIns -type f |
grep -v plist | xargs nm | sort | uniq | grep _mac_iokit_check_device
ただし、カーネルイメージには、次のように推測されるシンボルがあるようです
nm /mach_kernel|grep mac_iokit_check
ドライバー kext でこの未解決のシンボルの問題を解決する方法はありますか? この問題のヘルプ/ポインタは大歓迎です。