Новый шаг по интеграции в Linux ядро RealTime-расширений

10.02.2010 14:39

До сих пор, в основной ветке 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 Кбайт - еще одна важная веха на пути к полной интеграции «Реального времени» в основную ветку ядра!