そのファイルがまだ存在していないか、またはロックファイルの中にあった プロセス ID により与えられる所有側プロセスがもはや動いていない場合は、 Fn uu_lock 関数はファイルに自身のプロセス ID を書込んで成功を返します。
Fn uu_lock_txfr 関数は、ロック所有権をもう一つのプロセスに移転します。 Fn uu_lock 関数がその前に成功している必要があります。
Fn uu_unlock 関数は、与えられた Fa ttyname について Fn uu_lock によって作成されたロックファイルを削除します。 Fn uu_unlock を呼び出す前には、 Fn uu_lock が成功していなければならないことに注意してください。
Fn uu_lockerr 関数は、 Fn uu_lock から返されるものと同様に、エラー Fa uu_lockresult を表現するエラーストリングを返します。
Fn uu_lock 関数は、次のいずれかの値を返します:
UU_LOCK_INUSE ロックは別のプロセスによって使われています。
UU_LOCK_OK ロックの作成に成功しました。
UU_LOCK_OPEN_ERR open(2) はロックファイルを開くことができません。
UU_LOCK_READ_ERR read(2) は、ロックファイルを読み取ることができません。
UU_LOCK_CREAT_ERR creat(2) は、一時ロックファイルを 作成することができません。
UU_LOCK_WRITE_ERR write(2) の呼び出しによって、現在のプロセス ID を ロックファイルに書込むことができません。
UU_LOCK_LINK_ERR link(2) は、一時ロックファイルをリンクすることができません。
UU_LOCK_TRY_ERR ロックする試みは、5 回の試行の後に失敗しました。
UU_LOCK_OK の値が Fn uu_lockerr に渡された場合は、空のストリングが 返されます。それ以外の場合は、失敗した理由を示すストリングが返されます。 Fn uu_lockerr は、現在の errno の値を使って正確なエラーを判断します。 Fn uu_lock を呼び出してから Fn uu_lockerr を呼び出すまでの間に errno が変化してしまわないように注意してください。
Fn uu_lock_txfr 関数は、次のいずれかの値を返します:
UU_LOCK_OK 転送は成功しました。指定したプロセスが現在デバイスロックを 持っています。
UU_LOCK_OWNER_ERR 現在のプロセスは、指定されたデバイスについての ロックをすでに持ってはいません。
write(2) の呼び出しによっては、新しいプロセス ID を ロックファイルに書込むことができません。
Fn uu_unlock 関数は、ロックファイルが削除できなかった理由を示す グローバル変数 errno を設定します。詳しくは、 unlink(2) についての解説を参照してください。
呼び出しプロセスは、 /var/spool/lock ディレクトリに対する書込み許可を 持っていなければなりません。このディレクトリの許可がロックされる シリアルデバイスの許可と同じであることを保証する仕組みは備えていません。