我想知道在OSx内核的睡眠和唤醒过程中发生了什么。
内核扩展是否接收到新的地址空间并重新开始其初始化过程,或者内核只是将扩展放回同一地址空间?
内部内核扩展(例如IOKit驱动程序)的行为是否也相同?也许它们被加载到内存中的不同位置?
基本上问题是:我的驱动程序(它获得了IOService的接口)是否能够在睡眠后使用其地址而没有问题。
答案 0 :(得分:1)
在睡眠时,记忆被“冻结”,并且在恢复时,它会恢复到原始状态。因此,除非您积极参与电源管理,否则您的kext将不会发现任何已更改的内容。如果您直接与硬件打交道,那么您将需要关注电源管理,因为您的设备将进行电源循环并需要重新初始化。