3

我正在为 OS X 上的 USB 设备开发内核驱动程序。添加setPowerState处理程序后,我注意到在调用start方法后立即调用唤醒事件。当我加载驱动程序和插入 USB 设备时,这会在 OS X 10.6 上发生。

kernel.log 显示了我在每个方法调用中所做的 iolog 条目:

...(attach device)
MyDriver: Initializing
MyDriver: Probing
MyDriver: Starting
MyDriver: Waking
...(detach device)
MyDriver: Stopping
MyDriver: Freeing

我可以期望每次启动后都会发生唤醒吗?

如果是这样,将我的大部分初始化代码放入setPowerState处理程序是否合理,知道它将在启动后被调用?

OS X 10.4 和 10.5 也是这样吗?

4

1 回答 1

1

是的,您可以,只要您的驱动程序正确连接到电源平面并正确初始化电源管理(请参阅下面实施基本电源管理标题下的链接。

这不仅是合理的,而且是意料之中的。请注意,唯一不存在的初始化代码setPowerState是 instart或其他地方的东西,它只加载一次,并且具有用于睡眠和唤醒事件的电源状态代码start

有关更多信息,请参见此处

Mac OS X 版本中 setPowerState 的唯一区别在于,在 Mac OS X 10.5 和更高版本中,setPowerState 在其自己的线程中调用,而 10.4 则作为现有线程的一部分调用。

于 2012-03-02T22:46:25.340 回答