STREAMS モジュールでの変更点は、透過的な I/O 制御、ストリームへのモジュールの自動プッシュ、新しいメッセージタイプなどです。
SunOS 4 リリースでは、特定のドライバは ioctl() 要求を行う前は STREAMS ドライバであったということを知っておく必要があります。
STREAMS 以外のドライバについては、次のように直接 ioctl() 要求ができます。
ioctl(fd, DRIVER_IOCTL, arg); |
STREAMS ドライバについては、次のように strioctl 構造を設定した後で使用しなければなりません。
ioctl(fd, I_STR, &strioctl); |
ドライバが STREAMS ベースであったかどうかを判定する簡単な方法はありませんでした。現在では、ストリームヘッドに対する認識されない ioctl() はドライバに渡されるので、ドライバが STREAMS ベースであったかどうかを知る必要がなくなりました。
特に透過的 ioctl() をサポートするため、新しいメッセージタイプが Solaris 7 リリースに追加されました。現在、カーネルとの間のユーザデータの転送をストリームヘッドに通知するための「コピーイン」 および「コピーアウト」 メッセージがあります。
STREAMS ドライバを書く詳細については、『STREAMS Programming Guide』を参照してください。
SunOS 4 の streamtab 構造体では、デバイスが open() のときに特定の STREAMS モジュールをプッシュするようドライバ側で指定できました。
Solaris 7 では、システム管理者と autopush(1M) コマンドが、いつ STREAMS モジュールをプッシュするかを指定します。必要な場合、ドライバのインストール時に autopush を実行できます。
STREAMS モジュールのプッシュに関する詳しい情報については、『STREAMS Programming Guide』を参照してください。