My point was that it DOESN'T NEED TO DO ANYTHING AT ALL.
It has to get the runqueue lock in order to move the currently executing
threads off that CPU anyway. The fact that it can (and actually does)
synchronize with the scheduler in other ways is totally and utterly
immaterial.
That's what "robust" means. It means that things just work, and there are
no subtle interactions.
Sure, you can serialize with something complicated and heavy.
But isn't it nice that the absolutely _least_ complicated and heavy
operation (ie getting the runqueue lock) also serializes sufficiently?
Isn't it nice how you have to do that in order to do all those other
things that you obviously have to do?
Please don't argue about how we can add more subtle rules, or how other
thigns can serialize this thing as well. Isn't it sufficient that the
_obvious_ things serialize it?
Linus
--