2014-02-10 1 views
0

В ядре linux у меня есть блок кода, который должен быть выполнен с отключенным прерыванием ядра.отключить ядро ​​nterrupt для длительной перезагрузки проблемы?

Код заключен в

spin_lock_irqsave(); spin_unlock_irqsave()

Время выполнения кода - несколько секунд. Это плохо? Можно ли отключить прерывание ядра в течение нескольких секунд? Когда я запускаю код, операционная система перезагружается и ошибки не

Нет ошибок, обнаруженных загрузки Информация: Последняя причина загрузки: сторожевой

Что это значит?

Благодаря

+0

Технически вы можете предотвратить перезагрузку сторожевого таймера, обнаружив код, который сбрасывает сторожевой таймер (возможно, что-то периодически запускается из прерывания таймера), и убедитесь, что вы делайте то же самое в своем коде, по крайней мере, достаточно часто, чтобы сторожевой таймер никогда не мог истечь от пренебрежения и перезагрузки системы. Но вы вполне можете обнаружить, что другие проблемы возникают из-за того, что прерывания отключены так долго. –

ответ

1

Это очень плохая идея, чтобы отключить прерывания на несколько секунд.

Вы должны воссоздать свой код, используя, например, отложенные функции. Вы можете использовать для этого цепочки или рабочие места. Отключить прерывания только в тех точках, где вам это действительно нужно.

Как вы можете видеть, отключены ли прерывания в течение такого длительного времени - сторожевой таймер перезапускает вашу систему. Контрольная панель перезапускает вашу систему, потому что она «думает», что система замерзает, потому что вы отключили прерывания.

0

Да, это серьезно плохо. Это может вызвать «жесткую блокировку» (но зависит от конфигурации вашего ядра). Если возможно создать «нижнюю половину» (хороший способ) и использовать «жесткие» операционные системы в этом контексте, это может быть превентивным. Также не используйте подпрограммы планировщика в атомном контексте (верхний дно, обработчик прерываний), это вызовет панику ядра. Дополнительную информацию можно найти в главе 10: Обработка прерываний (https://lwn.net/Kernel/LDD3/)

 Смежные вопросы

  • Нет связанных вопросов^_^