IOLog и контекст прерывания
Q: В документации для IOLog говорится, что «IOLog нельзя вызвать от контекста прерывания». Как я знаю, работаю ли я в контексте прерывания?
A: «Контекст прерывания» является другим именем для основного прерывания или время аппаратного прерывания, в противоположность вторичному прерыванию или время программного прерывания.
Существует только два места в Наборе I/O, который необходимо взволновать по поводу выполнения в основное время прерывания. Первое находится в Filter функционируйте Вы передаете в IOFilterInterruptEventSource::filterInterruptEventSource. Другой, намного меньше общего падежа находится в IOInterruptAction функция передала IOService::registerInterrupt. В эти времена очень мало системы доступно, таким образом, Вы не можете вызвать IOLog.
Action функционируйте Вы передаете при создании a IOFilterInterruptEventSource будет работать на цикле работы, к которому присоединен источник события, таким образом, можно вызвать IOLog в Action функция. Помните, Action функция будет только вызвана если Ваш Filter функциональные возвраты true или вызовы IOFilterInterruptEventSource::signalInterrupt.
История версии документа
| Дата | Примечания |
|---|---|
| 22.07.2011 | Переформатированное содержание и внесло незначительные редакционные изменения. Расширенное объяснение того, когда вызвана функция Действия. |
| 13.02.2002 | Новый документ, описывающий, когда Набор I/O выполняет в основном (аппаратные средства) контекст прерывания. |