2001/04/03    SysV Semaphore on MacOS X

昨日の日記に、「ひょっとして正式版に SysV semaphore がサポートされたかも知れないがこれもチェックしようがない。grep semget /mach.sym とかして見れば分かるはずだが、どなたかご存じの方がいたら教えていただきたい。」と書いたら、さっそくある有名な方からお返事いただいた。ところが、申し訳ないことに上記の方法ではチェックできないことが判明。Darwin-1.2 の標準カーネルにも上記のシンボルが含まれることが分かったからである。ちゃんとチェックしてから書くべきだったと反省している。
実は標準では、xnu/bsd/kern/sysv_ipc.c に、ダミーで SysV semaphore 関係の関数が定義されており、戻り値に (EOPNOTSUPP) を返すようになっていた。これがちゃんと実装したものに置き換わっているかどうかをテストプログラムでチェックする必要があった(実装されていなければ、semget、semop、semctl などが errno を EOPNOTSUPP = 45 にセットするはず)。チェックにつきあって下さった方、済みません。

それと、昨日の日記に関する補足。Linux などで実行可能形式がリンクしている共有ライブラリを調べるのに使う ldd に対応するものとして、MacOS X / Darwin では "otool -L" が使える。実際 rpm の私家版パッチでは、これを使って Darwin.req を実装した。

今までにコンパイルしたもののソースおよびパッチは macosx/src に、またバイナリーの tar ball は macosx/tgz または macosx/darwin.tgz にそれぞれ置いてある。また、MacOS X 用の rpm については SPECSSOURCESSRPMSRPMS にそれぞれ対応するものが置いてある。いつものように使う場合は自己責任で。


Back to Keisuke Fujii's MkLinux/LinuxPPC Life