Всегда ли setPowerState вызывается после запуска? - PullRequest
3 голосов
/ 21 апреля 2011

Я разрабатываю драйвер ядра для устройства USB на OS X. После добавления обработчика setPowerState я замечаю, что он вызывается для события пробуждения сразу после вызова метода start.Это происходит в OS X 10.6, когда я загружаю драйвер и когда я подключаю USB-устройство.

В 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 Ответ

1 голос
/ 03 марта 2012

Да, можно, если ваш драйвер правильно подключен к Power Plane и правильно инициализировал управление питанием (см. Ссылку ниже под заголовком Внедрение базового управления питанием .

Это не только разумно, но и ожидаемо. Обратите внимание, что единственный код инициализации, который не находится в setPowerState и находится в start или где-либо еще, - это материал, который загружается только один раз и имеет код обработки состояния питания для сна исобытия пробуждения в start.

Для получения дополнительной информации см. здесь .

Единственное отличие между setPowerState в версиях Mac OS X состоит в том, что в Mac OS X 10.5 и новееsetPowerState вызывается в своем собственном потоке, а 10.4 - как часть существующего потока.

...