До сих пор, в основной ветке Linux, использовался только один тип спинлок-блокировок
- «вращающиеся» спинлоки (spinning spinlocks). Однако, в дереве
PREEMPT_RT, они должны быть дифференцированы между спинлоками которые
могут «засыпать» в режиме реального времени и обычными спинлоками, даже
в режиме реального времени. Это требует нового пространства имен и
решения, какой тип спинлоков переименовать.
На конференции Kernel Summit 2009, было решено
не переименовывать блокировки, которые должны быть преобразованы в
«засыпающие» спинлоки в дереве PREEMPT_RT, поскольку это привело бы к
огромному количеству патчей и, безусловно, создало бы путаницу. Позднее, в заключительной стадии слияния Linux 2.6.33, Линус выступил с предложением:
- Переименовать архитектуру реализаций спинлоков от raw_spinlock к arch_spinlock.
- Использовать raw_spinlock для спинлоков, которые работают даже на RT-ядре
- Сохранить spinlock блокировку для спинлоков, которые могут засыпать в режиме реального времени.
Томас Глейкснер создал серию патчей, которые Линус включил в ядро
2.6.33. Это позволило уменьшить размеры PREEMPT_RT патча на 350 Кбайт -
еще одна важная веха на пути к полной интеграции «Реального времени» в
основную ветку ядра!
Источник
|