Когда задача ожидает очереди ожидания в ядре Linux, она может находиться в режиме непрерывного или непрерывного ожидания. Первый будет разбужен сигналами, а второй нет. Тип ожидания определяется задачей ожидания, когда она ожидает очередь ожидания.
Функция wake_up_all()
активирует каждую задачу, ожидающую в данной очереди ожидания, и те, и другие ожидают непрерывно и непрерывно. Этот код использует wake_up_all()
, потому что он поддерживает задачи, непрерывно ожидающие этого конкретного условия (см. ttm_read_lock()
).
Функция wake_up_interruptible()
только запускает задачи, ожидающие прерывания, поэтому будет использоваться, только если вы не хотите вызывать задачи в режиме непрерывного ожидания.