Solaris 移行ガイド

透過的な ioctl()

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』を参照してください。