是否在启动后始终调用setPowerState?

时间:2011-04-21 17:48:40

标签: macos usb kernel driver power-management

我正在为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也是如此吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以,提供您的驱动程序已正确连接到Power Plane并正确初始化Power Managment(请参阅实施基本电源管理标题下的链接。

这不仅是合理的,而且是预期的。请注意,唯一不在setPowerState且位于start或其他地方的初始化代码是仅加载一次的内容,并且具有{{1中的睡眠和唤醒事件的电源状态处理代码}}。

有关详细信息,请参阅here

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