Технические вопросы и ответы QA1100

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 выполняет в основном (аппаратные средства) контекст прерывания.