NetBSDとFreeBSDのmutex実装の違い(1)

FreeBSDでのmutexの初期化:
jpman search errorを参照。

void
mtx_init(struct mtx *mutex, const char *name, const char *type, int opts);

mutexはmutex変数、nameは名前、typeは「ロックの順序をチェックするとき、ミューテックスを区別するために、証言 (witness) コードによって使用されます」とあるが、どういう事だ?NULLでもよいらしいが・・・、optsはmutexのタイプで通常のmutexであるMTX_DEFかスピンロックであるMTX_SPINを指定する。

NetBSDでのmutexの初期化:
mutex - NetBSD Manual Pagesを参照。

void
mutex_init(kmutex_t *mtx, kmutex_type_t type, int ipl);

mtxはmutex変数、typeはMUTEX_DEFAULTであるべき(他にも有るが使うべきでない)と書いてある、iplはinterrupt priprity levelの事で、指定したiplによって通常のmutexになるかスピンロックのmutexになるかが決まる。
IPL_NONE, IPL_SOFT*の時は通常のmutex, IPL_VM, IPL_SCHED, IPL_HIGHの時はスピンロック。