システムコールに関する非互換性の一部は、このパッケージでは対処できません。その理由としては、コールがすでに廃止されていたり、ユーザアプリケーションで使用すべきものではなかったり、他の独立パッケージに組み込まれたりしていることが考えられます。以下、この種のコールをリストし、それぞれについて説明します。
Solaris 2.x バージョンの acct() には、アプリケーションバイナリインタフェース (ABI) および System V インタフェース定義 (SVID) との互換性がありますが、SunOS 4.x にはその互換性はありません。相違点は、アカウントのオフへの切替えに関する点と、アカウントレコードの形式です。Solaris 2.x リリースでは、アカウントがすでにオンになっているときは、特定のパス名を指定して acct() をコールすると、アカウントはオフにされます。同じ条件下での SunOS 4.x リリースの場合は、コールしても別のアカウントファイルに切り替わるだけで、アカウントはオフにはなりません。
バイナリ互換パッケージでも、また Solaris 2.x 環境でも、監査はサポートされていません。監査は、Solaris 2.x リリースでは独立したパッケージで取り扱います。そのパッケージが提供する監査機能には、SunOS 4.x とのバイナリ互換性がありません。
このコールは廃止されました。Solaris 2.x リリースまたはバイナリ互換パッケージではサポートされません。
Solaris 2.x では、fcntl(2) ロックに加えて、flock の 1 バージョンがインプリメントされています。このバージョンと SunOS 4.x のバージョンは、完全なバイナリ互換性を備えているわけではなく、以下のような相違点があります。
flock では、排他的ロックを要求する前にファイルが書き込み用にオープンされていることが必要です。
共用ロックを取得するには、ファイルに対する読み取り許可が必要です。
プロセスが flock() を使ってすでにロックされているセグメントをロックすると、古いロックタイプが除去され、新しいロックタイプが効力を持ちます。
ロックは、fork() 関数の子プロセスには継承されません。
SunOS 4.x の下で flock() メカニズムにより取得したロックは、それを設定したシステムの中でしか認識されませんでした。この制約はなくなりました。
SunOS 4.x の flock() 動作は、デフォルトの Solaris 2.x リリースでもこのパッケージでも利用できません。
古い Version 7 および 4BSD ターミナルドライバによりサポートされていた ioctl() に加えて、filio、sockio、streamio、termio、termios、mtio、および dkio に関連したすべての ioctl がサポートされます。その他には、Solaris 2.x プラットフォームの標準デバイスに関連した ioctl() のみが提供されています。2 つのバージョン間での ioctl() 番号の相違 (サポートされている ioctl() の場合) は、透過的に処理されます。ioctl() のパラメータは、必要に応じてマップされます。
以下に示す SunOS 4.x の ioctl() には、Solaris 2.x との互換性がありません。
この ioctl() は、Solaris 2.x では使用できませんが、バイナリ互換パッケージはこれをサポートしています。この ioctl() は、DKIOCINFO で置き換えられました。DKIOCGCONF には、SunOS 4.x の DKIOCGCONF 構造体と DKIOCINFO 構造体とを組み合わせた情報が含まれています。
この ioctl() は Solaris 2.x ではサポートされていません。バイナリ互換パッケージでは、これは EINVAL を戻します。
SunOS 4.x では、この ioctl() は、フロッピーデバイスの書き込みチェックを切り替えます。バイナリ互換パッケージでは、この ioctl() はフロッピーデバイスの書き込みチェックを切り替えませんが、操作成功のステータスを返します。
この ioctl() が使用できるのは、xd(7)、xy(7)、ipi(7) の各ドライブの場合だけです。この ioctl() は、SCSI デバイスの場合は失敗します。この種のデバイスの場合は、USCSI ioctl() を使用してください。
この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。
この Solaris 2.x システムコールは、SunOS 4.x の場合とは異なる働きをします。最初の引数として -1 が与えられた場合は、呼び出したプロセス自身も終了されます。SunOS 4.x では、この動作はありませんでした。
SunOS 4.x での pipe() システムコールは、1 つのディスクリプタは読み取り用に、別のディスクリプタは書き込み用にと、それぞれ用途を分けてオープンします。Solaris 2.x では、このシステムコールは、ディスクリプタを読み取りと書き込みの両用としてオープンします。この相違点の影響を受けるバイナリは、(仮にあったとしても) ほとんどないので、互換バージョンは提供されていません。
SunOS 4.x の ptrace() システムコールに渡すオプションの addr2 引数は、サポートされていません。また、Solaris 2.x リリースでは、次のリクエストはサポートされません。
/* 10, attach to an existing process */
/* 11, detach from a process */
/* 12, get all registers */
/* 13, set all registers */
/* 14, get all floating point regs */
/* 15, set all floating point regs */
/* 16, read data segment */
/* 17, write data segment */
/* 18, read text segment */
/* 19, write text segment */
/* 20, get all fpa regs */
/* 21, set all fpa regs */
/* 22, get register window n */
/* 23, set register window n */
/* 22, filler */
/* 23, filler */
/* 24, trap next sys call */
/* 25, dump process core */
/* 26, set write breakpoint */
/* 27, set access breakpoint */
/* 28, clear debug register 7 */
/* 26, filler */
/* 27, filler */
/* 28, filler */
/* 29, get u.u_code */
Solaris 2.x リリースとバイナリ互換パッケージには、このシステムコールはありません。ユーザアプリケーションでこのシステムコールは必要とされないはずです。
デフォルトの Solaris 2.x リリースとバイナリ互換パッケージには、このシステムコールはありません。