2013-01-09 6 views
2

Реализация linux kernel spin_lock отключает предварительное использование путем вызова preempt_disable(). В моей конфигурации ядра CONFIG_PREEMPT не установлен. Так как прерывания не отключены во время обработки прерывания, вызывающий прерывание может вызвать расписание(). Может ли кто-нибудь указать код, в котором планировщик не планирует другой процесс, так как он приобрел spin_lock.Предотвращение во время spin_lock

ответ

3

Обработчики прерываний: не разрешено звонить по телефону schedule().

+0

Поскольку в обработчике прерываний не разрешено (() не разрешено использование циклического типа планирования в ядре linux. то есть кто часто вызывает планировщик. В entry_32.S он вызывает планировщик, только если определен CONFIG_PREEMPT. – Yogi

+1

@ user1428099: планировщик может быть вызван при возврате в пользовательское пространство, в том числе, если ядро ​​было введено из пользовательского пространства для обслуживания прерывания. – caf

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