参照元†
- FIXME: これは何?
- BKL(Big Kernel Lock)のアンロック関数の本体
- 最後のアンロックではない場合: ロックカウントを減算する
- 最後のアンロック: __unlock_kernel() を呼んで、
BKL 用のスピンロック等を解放する
- const char *func
- const char *file
- int line
返り値†
void __lockfunc _unlock_kernel(const char *func, const char *file, int line)
{
BUG_ON(current->lock_depth < 0);
- 既にアンロック状態(ロックカウントが -1)であれば、
異常事態とみなす。
if (likely(--current->lock_depth < 0))
__unlock_kernel();
- ロックカウントを減算する。
- 減算後、BKL がアンロック状態(ロックカウントが -1)であれば、
__unlock_kernel() を呼んで、BKL 用のスピンロック等を解放する。
trace_unlock_kernel(func, file, line);
}
(略)
EXPORT_SYMBOL(_unlock_kernel);
コメント†