2015-02-20 2 views
3

Я хотел знать эту часть. Мы знаем, что таблетки не могут спать, тогда, если прерывание HW происходит с тем, что происходит с тасками?Что происходит, когда прерывание прерывается аппаратным прерыванием?

Я столкнулся с крахом, в котором прерывание прерывается прерыванием hW. Я использовал спин-блокировку в своей тачке.

Должен ли я использовать spinlock_irq_save?

Пожалуйста, дайте мне знать.

+0

Принять ответ, если его очищает ваши сомнения –

+0

Что вы пытаетесь защитить с помощью «спинлок»? Часто вы можете строить вещи так, чтобы это не имело значения. Хотя 'spinlock_irq_save' может быть решением, это увеличит всю задержку IRQ системы. То есть, это может быть плохая идея в зависимости от контекста. –

ответ

3

Да, вы правы. Цепочки могут быть прерваны прерываниями HW, и вы должны это предотвратить. Используя spin_lock_irqsave() и семью.

См https://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c188.html

Если вы не сделаете это, и если тасклеты прерываются, то вы видели, что происходит (аварии)

+0

Если вы используете spin_lock_irqsave, вы можете неосознанно увеличить задержку прерывания. В соответствии с определением задачи, он работает в контексте разрешения прерывания. Два такелажа одного типа не могут работать одновременно, а что такое использование блокировки? Я вижу блокировку только в случае общего ресурса, но я не могу вспомнить сценарий. Не могли бы вы привести пример? – Manish

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