バイナリ互換性ガイド

システムコール

SunOS 4.x と Solaris 2.x のシステムコールの間には、システムコール番号の違いやコールインタフェースや動作の違いなど、大きな相違点がいくつかあります。バイナリ互換パッケージは、マッピングを行なったり、意図したインタフェースまたは動作を提供する代替ルーチンを使用するなどして、2 つのバージョン間のシステムコールの相違点のほとんどを吸収しています。

システムコールのマッピングの結果として、バイナリ互換パッケージの下で実行される truss(1) プログラムの出力が、予測とは異なるものになることがあります。たとえば、システムコールの名前が違ったり、予期したときにシステムコールが発生しなかったりすることがあります。また、コールに渡される引数や戻り値が違うこともあります。たとえば、パス名の解決処理を必要とする場合に (「パス名の解決処理」を参照)、あるファイルに対する open() コールの結果、実際には別のファイルがオープンされることがあります。

アプリケーションは、libc に収められているラッパルーチンを介してシステムコールを呼び出す必要があります。トラップメカニズムを介してシステムコールを直接呼び出すことは、絶対にしないでください。これを行うと、データとシステムコール番号を正しくマップすることができません。