月イチ更新と化したこのスピンロック連載、おそらく固定読者はいないと思いますが細々と続けてみます。 前回の最後に「次は(c)のケースだ」などと予告しましたが、(b)のケースとあまり変わり映えしないので思い切って省略します。ふりかえれば、その2でロック取得を追い始めて以来早くも3か月経ってしまいました。いい加減にロックを解放しなきゃどんなシステムも止まるわな、てなわけではありませんが話題を spin_unlock() に移します。 その2で確認したタスク・スケジューラの task_rq_lock() に対応する解放処理は、その名も task_rq_unlock() です。 kernel/sched.c static inline void task_rq_unlock(runqueue_t *rq, unsigned long *flags) __releases(rq->lo