バイナリ互換性ガイド

非互換インタフェース

システムコールに関する非互換性の一部は、このパッケージでは対処できません。その理由としては、コールがすでに廃止されていたり、ユーザアプリケーションで使用すべきものではなかったり、他の独立パッケージに組み込まれたりしていることが考えられます。以下、この種のコールをリストし、それぞれについて説明します。

acct

Solaris 2.x バージョンの acct() には、アプリケーションバイナリインタフェース (ABI) および System V インタフェース定義 (SVID) との互換性がありますが、SunOS 4.x にはその互換性はありません。相違点は、アカウントのオフへの切替えに関する点と、アカウントレコードの形式です。Solaris 2.x リリースでは、アカウントがすでにオンになっているときは、特定のパス名を指定して acct() をコールすると、アカウントはオフにされます。同じ条件下での SunOS 4.x リリースの場合は、コールしても別のアカウントファイルに切り替わるだけで、アカウントはオフにはなりません。

audit、auditon、auditsvc、getauid、setauid、setaudit、setuseraudit

バイナリ互換パッケージでも、また Solaris 2.x 環境でも、監査はサポートされていません。監査は、Solaris 2.x リリースでは独立したパッケージで取り扱います。そのパッケージが提供する監査機能には、SunOS 4.x とのバイナリ互換性がありません。

getdirentries

このコールは廃止されました。Solaris 2.x リリースまたはバイナリ互換パッケージではサポートされません。

flock

Solaris 2.x では、fcntl(2) ロックに加えて、flock の 1 バージョンがインプリメントされています。このバージョンと SunOS 4.x のバージョンは、完全なバイナリ互換性を備えているわけではなく、以下のような相違点があります。

SunOS 4.x の flock() 動作は、デフォルトの Solaris 2.x リリースでもこのパッケージでも利用できません。

ioctl

古い Version 7 および 4BSD ターミナルドライバによりサポートされていた ioctl() に加えて、filiosockiostreamiotermiotermiosmtio、および dkio に関連したすべての ioctl がサポートされます。その他には、Solaris 2.x プラットフォームの標準デバイスに関連した ioctl() のみが提供されています。2 つのバージョン間での ioctl() 番号の相違 (サポートされている ioctl() の場合) は、透過的に処理されます。ioctl() のパラメータは、必要に応じてマップされます。

以下に示す SunOS 4.x の ioctl() には、Solaris 2.x との互換性がありません。

DKIOCGCONF

この ioctl() は、Solaris 2.x では使用できませんが、バイナリ互換パッケージはこれをサポートしています。この ioctl() は、DKIOCINFO で置き換えられました。DKIOCGCONF には、SunOS 4.x の DKIOCGCONF 構造体と DKIOCINFO 構造体とを組み合わせた情報が含まれています。

DKIOCGLOG

この ioctl() は Solaris 2.x ではサポートされていません。バイナリ互換パッケージでは、これは EINVAL を戻します。

DKIOCWCHK

SunOS 4.x では、この ioctl() は、フロッピーデバイスの書き込みチェックを切り替えます。バイナリ互換パッケージでは、この ioctl() はフロッピーデバイスの書き込みチェックを切り替えませんが、操作成功のステータスを返します。

DKIOCSCMD

この ioctl() が使用できるのは、xd(7)xy(7)ipi(7) の各ドライブの場合だけです。この ioctl() は、SCSI デバイスの場合は失敗します。この種のデバイスの場合は、USCSI ioctl() を使用してください。

_O_TIOCCONS

この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。

_O_TIOCGSIZE

この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。

_O_TIOCSSIZE

この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。

TIOCMODG

この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。

TIOCMODS

この ioctl() は廃止され、Solaris 2.x リリース、バイナリ互換パッケージではサポートされません。

kill

この Solaris 2.x システムコールは、SunOS 4.x の場合とは異なる働きをします。最初の引数として -1 が与えられた場合は、呼び出したプロセス自身も終了されます。SunOS 4.x では、この動作はありませんでした。

pipe

SunOS 4.x での pipe() システムコールは、1 つのディスクリプタは読み取り用に、別のディスクリプタは書き込み用にと、それぞれ用途を分けてオープンします。Solaris 2.x では、このシステムコールは、ディスクリプタを読み取りと書き込みの両用としてオープンします。この相違点の影響を受けるバイナリは、(仮にあったとしても) ほとんどないので、互換バージョンは提供されていません。

ptrace

SunOS 4.x の ptrace() システムコールに渡すオプションの addr2 引数は、サポートされていません。また、Solaris 2.x リリースでは、次のリクエストはサポートされません。

PTRACE_ATTACH

/* 10, attach to an existing process */

PTRACE_DETACH

/* 11, detach from a process */

PTRACE_GETREGS

/* 12, get all registers */

PTRACE_SETREGS

/* 13, set all registers */

PTRACE_GETFPREGS

/* 14, get all floating point regs */

PTRACE_SETFPREGS

/* 15, set all floating point regs */

PTRACE_READDATA

/* 16, read data segment */

PTRACE_WRITEDATA

/* 17, write data segment */

PTRACE_READTEXT

/* 18, read text segment */

PTRACE_WRITETEXT

/* 19, write text segment */

PTRACE_GETFPAREGS

/* 20, get all fpa regs */

PTRACE_SETFPAREGS

/* 21, set all fpa regs */

PTRACE_GETWINDOW

/* 22, get register window n */

PTRACE_SETWINDOW

/* 23, set register window n */

PTRACE_22

/* 22, filler */

PTRACE_23

/* 23, filler */

PTRACE_SYSCALL

/* 24, trap next sys call */

PTRACE_DUMPCORE

/* 25, dump process core */

PTRACE_SETWRBKPT

/* 26, set write breakpoint */

PTRACE_SETACBKPT

/* 27, set access breakpoint */

PTRACE_CLRDR7

/* 28, clear debug register 7 */

PTRACE_26

/* 26, filler */

PTRACE_27

/* 27, filler */

PTRACE_28

/* 28, filler */

PTRACE_GETUCODE

/* 29, get u.u_code */

swapon

Solaris 2.x リリースとバイナリ互換パッケージには、このシステムコールはありません。ユーザアプリケーションでこのシステムコールは必要とされないはずです。

vadvise

デフォルトの Solaris 2.x リリースとバイナリ互換パッケージには、このシステムコールはありません。