Логи частично утеряны после сбоя

К вашему сведению, флаг IRQF _DISABLED был полностью удален из ядра Linux, см. это обновление .

Основными двумя причинами, которые привели к полному исключению флага, были

  1. Если несколько устройств используют одну физическую линию прерывания (из-за аппаратной стоимости ), он не только позволяет обрабатывать прерывания, но и также другие сигналы прерывания, которые используют одно и то же физическое прерывание линия.
  2. Кроме того, если прерывание происходит во время обработки одного прерывания. обрабатывается, он может выйти за пределы стека ядра, поскольку текущий контекст прерывания должен быть сохранен в стеке ядра для обработки другое прерывание.

Кроме того, важно, чтобы 99,999% обработчиков прерываний ядра завершались как можно раньше, и обратите внимание, что помогает некоторый механизм отсрочки. Следовательно, наличие флага IRQF _DISABLED в зависимости от характеристик прерывания (, является ли оно быстрым или медленным ), не имеет смысла.

И чтобы ответить на ваш вопрос, он не обрабатывает прерывания одно за другим, когда вы сбрасываете флаг IRQF _DISABLED, потому что другое прерывание может прервать выполнение вашего обработчика прерывания; и это было причиной того, что переполнение может произойти, когда флаг не установлен. Кроме того, пожалуйста, обратитесь к этой статье для получения дополнительной информации

0
01.12.2021, 16:09
0 ответов

Теги

Похожие вопросы