システムコールに関する非互換性の一部は、このパッケージでは対処できません。その理由としては、コールがすでに廃止されていたり、ユーザーアプリケーションで使用すべきものではなかったり、他の独立パッケージに組み込まれたりしていることが考えられます。以下、この種のコールそれぞれについて説明します。
Solaris 8 バージョンの acct() には、アプリケーションバイナリインタフェース (ABI) および System V インタフェース定義 (SVID) との互換性がありますが、SunOS 4.x にはその互換性はありません。相違点は、アカウントのオフへの切替えに関する点と、アカウントレコードの形式です。Solaris 8 リリースでは、アカウントがすでにオンになっているときは、特定のパス名を指定して acct() をコールすると、アカウントはオフになります。同じ条件下での SunOS 4.x リリースの場合は、コールしても別のアカウントファイルに切り替わるだけで、アカウントはオフにはなりません。
バイナリ互換パッケージでも、また Solaris 8 環境でも、監査はサポートされていません。監査は、Solaris 8 リリースでは独立したパッケージで取り扱います。そのパッケージが提供する監査機能には、SunOS 4.x とのバイナリ互換性がありません。
このコールは廃止されました。Solaris 8 リリースまたはバイナリ互換パッケージではサポートされません。
Solaris 8 では、fcntl(2) ロックに加えて、flock の 1 バージョンが実装されています。このバージョンと SunOS 4.x のバージョンは、完全なバイナリ互換性を備えているわけではなく、以下のような相違点があります。
flock では、排他的ロックを要求する前にファイルが書き込み用にオープンされていることが必要です。
共用ロックを取得するには、ファイルに対する読み取り権が必要です。
プロセスが flock() を使ってすでにロックされているセグメントをロックすると、古いロックタイプが除去され、新しいロックタイプが効力を持ちます。
ロックは、fork() 関数の子プロセスには継承されません。
SunOS 4.x の下で flock() メカニズムにより取得したロックは、それを設定したシステムの中でしか認識されませんでした。この制約はなくなりました。
SunOS 4.x の flock() 動作は、デフォルトの Solaris 8 リリースでもこのパッケージでも利用できません。
古い Version 7 および 4BSD ターミナルドライバによりサポートされていた ioctl() に加えて、filio、sockio、streamio、termio、termios、mtio、および dkio に関連したすべての ioctl がサポートされます。その他には、Solaris 8 プラットフォームの標準デバイスに関連した ioctl() のみが提供されています。2 つのバージョン間での ioctl() 番号の相違 (サポートされている ioctl() の場合) は、透過的に処理されます。ioctl() のパラメータは、必要に応じてマップされます。
以下に示す SunOS 4.x の ioctl() には、Solaris 8 との互換性がありません。
この ioctl() は Solaris 8 では使用できませんが、バイナリ互換パッケージはこれをサポートしています。この ioctl() は、DKIOCINFO で置き換えられました。DKIOCGCONF には、SunOS 4.x の DKIOCGCONF 構造体と DKIOCINFO 構造体とを組み合わせた情報が含まれています。
この ioctl() は Solaris 8 ではサポートされていません。バイナリ互換パッケージでは、これは EINVAL を戻します。
SunOS 4.x では、この ioctl() は、フロッピーデバイスの書き込みチェックを切り替えます。バイナリ互換パッケージでは、この ioctl() はフロッピーデバイスの書き込みチェックを切り替えませんが、操作成功のステータスを返します。
この ioctl() が使用できるのは、xd(7)、xy(7)、ipi(7) の各ドライブの場合だけです。この ioctl() は、SCSI デバイスの場合は失敗します。この種のデバイスの場合は、USCSI ioctl() を使用してください。
この ioctl() は廃止され、Solaris 8 リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 8 リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 8 リリース、バイナリ互換パッケージではサポートされません。
この ioctl() は廃止され、Solaris 8 リリース、バイナリ互換パッケージではサポートされません。
この Solaris 8 システムコールは、SunOS 4.x の場合とは異なる働きをします。最初の引数として -1 が与えられた場合は、呼び出したプロセス自体も終了します。SunOS 4.x では、この動作はありませんでした。
SunOS 4.x での pipe() システムコールは、1 つのディスクリプタは読み取り用に、別のディスクリプタは書き込み用にと、それぞれ用途を分けてオープンします。Solaris 8 では、このシステムコールは、ディスクリプタを読み取りと書き込みの両用としてオープンします。この相違点の影響を受けるバイナリは、 ほとんどないので、互換バージョンは提供されていません。
SunOS 4.x の ptrace() システムコールに渡すオプションの addr2 引数は、サポートされていません。また Solaris 8 リリースでは、次のリクエストはサポートされません。
/* 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 8 リリースとバイナリ互換パッケージには、このシステムコールはありません。ユーザアプリケーションでこのシステムコールは必要とされないはずです。
デフォルトの Solaris 8 リリースとバイナリ互換パッケージには、このシステムコールはありません。