ソースコードリーディング: pthread_mutex_destroy(3)

pthread_mutex_destroy(3) のソースコードリーディングを hiboma/hiboma に push した

github.com

pthread_mutex_destroy(3) 済みの mutex を pthread_mutex_lock(3) しようとすると EINVAL を返すが、Linux (正確には NPTL だろうか) ではどんな実装か気になったので読んだ

  • pthread_mutex_destroy は pthread_mutex_t の内部メンバに -1 をセットしているだけだった。
    • 何らかの「リソース」を破棄しているわけでないのだな
    • free(3), close(2) や munmap(3) ... 等々呼び出しを想像していたが全く違った
  • ついでに標準ではどのような実装を推奨しているかも合わせて読んでみた
    • オンラインで参照できるのは The Open Group Base Specifications Issue 7

システムコールやライブラリ関数で EINVAL を返すものはよく見かけるが、何がどうなって Invalid なのだろう? と度々疑問になる。そういう時はソースを読む