Это часть стандартов кодирования GNU, поэтому все программы GNU (и многие программы, не относящиеся к GNU) следуют им. Однако это отнюдь не абсолютный стандарт; есть и другие способы реализации, например:
-Wlong-option
: зародился в компиляторе C и указан как таковой в POSIX. -long-option
(т.е. одинарное тире): поддерживается большинством приложений (обычно как альтернатива версии с двойным тире), которые не имеют коротких опций. +long-option
: это уже выходит из моды, но есть несколько старых программных пакетов, которые резервировали тире для коротких опций, а знак плюс - для длинных. Сегодня используется редко, в основном потому, что большинство реализаций getopt() его не поддерживаютlong-option
: к сожалению, есть приложения, которые путают опции с аргументами. Я полагаю, что MegaCLI является одним из таких нарушителей (впрочем, он является нарушителем практически во всем остальном). К вашему сведению, флаг IRQF _DISABLED был полностью удален из ядра Linux, см. это обновление .
Основными двумя причинами, которые привели к полному исключению флага, были
Кроме того, важно, чтобы 99,999% обработчиков прерываний ядра завершались как можно раньше, и обратите внимание, что помогает некоторый механизм отсрочки. Следовательно, наличие флага IRQF _DISABLED в зависимости от характеристик прерывания (, является ли оно быстрым или медленным ), не имеет смысла.
И чтобы ответить на ваш вопрос, он не обрабатывает прерывания одно за другим, когда вы сбрасываете флаг IRQF _DISABLED, потому что другое прерывание может прервать выполнение вашего обработчика прерывания; и это было причиной того, что переполнение может произойти, когда флаг не установлен. Кроме того, пожалуйста, обратитесь к этой статье для получения дополнительной информации