詳解Linuxカーネルの5章カーネルの同期処理に関連する、Linuxのロックについて調べた。 ロックは共通関数が多そうなので、それらの仕組みから調べてみる。 カーネルバージョン v4.4 lock_acquire lockdep.hに実装されているマクロから、lock_acquire()はspinlock, rwlock(読み書き用spinlock), シークエンスロック, mutex, 読み書き用semaphoreで利用されているらしい。 これはlockdep-designのカーネルドキュメントにもあるように、ロックが正しいことを検証するためのデバッグのための関数である。 #define lock_acquire_exclusive(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i) #define lock_acquire_shared(l