Ядро Linux в комментариях

       

Free_irq


Действие функции free_irq противоположно действию request_irq. Если request_irq аналогична конструктору действий, то эта функция по своему действию наиболее напоминает деструктор.

Убедившись, что значение irq находится в допустимом диапазоне, функция free_irq находит соответствующую запись в массиве irq_desc и начинает итерации по ее списку действий.

Игнорирует этот элемент очереди, если только он не имеет правильный идентификатор устройства.

Удаляет этот элемент из очереди и освобождает выделенную ему память.

Если теперь очередь действий пуста— т.е., если только что был удален единственный элемент очереди — устройство отключается.

Если поток управления доходит до этой точки, значит функция free_irq прошла весь список действий, не найдя походящего dev_id. Если бы она нашла соответствующий идентификатор устройства, оператор goto в строке привел бы к пропуску этой строки. Следовательно, имела место ошибочная попытка освободить действие IRQ; функция free_irq выводит предупреждение об этом.



Содержание раздела