Предотвращение во время spin_lock

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

2
nl ja de

1 ответы

Обработчики прерываний not разрешены для вызова schedule() .

3
добавлено
@ user1428099: планировщик может быть вызван при возврате в пользовательское пространство, в том числе, если ядро ​​было введено из пользовательского пространства для обслуживания прерывания.
добавлено автор caf, источник
Поскольку schedule() не разрешен в обработчике прерываний, как циклический тип планирования выполняется в ядре linux. то есть кто часто вызывает планировщик. В entry_32.S он вызывает планировщик, только если определен CONFIG_PREEMPT.
добавлено автор Yogi, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru