Я недавно скачал источник linux с http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2.Я наткнулся на следующий абзац в файле с именем spinlocks.txt в папке linux-2.6.34.1 \ Documentation.
"это означает означает, что если у вас есть код, который выполняет
cli();
.. critical section ..
sti();
и другая последовательность, которая выполняет
spin_lock_irqsave(flags);
.. critical section ..
spin_unlock_irqrestore(flags);
, тогда они НЕ являются взаимоисключающими, и критические области могут возникать одновременно на двух разных ЦП. Это хорошо само по себе, но критическоерегионы лучше критиковать для разных вещей (то есть они не могут топтать друг друга). "
Как они могут повлиять, если какой-то код использует cli () / sti () и другую часть того же кодаиспользует spin_lock_irqsave (флаги) / spin_unlock_irqrestore (флаги)?