SD(4) — NEWS-OS Programmer’s Manual
名称
sd − SCSI ディスク デバイスドライバ
形式
/dev/sd[0-1][0-6][a-h]
/dev/rsd[0-1][0-6][a-h]
解説
sd はSCSIディスクデバイスのドライバです。
リリース 3.2 以前のディスクデバイス関係のデバイスドライバは、 ハードディスク用のデバイスドライバ hd と、 光磁気ディスク(MO)用のデバイスドライバ od、 及び、CD-ROM ドライブ用のデバイスドライバ cd に分かれていましたが、 リリース 3.3 からは sd デバイスドライバで全て扱えるようになっています。
sd デバイスドライバが認識するディスクデバイスは、次のものです。
Direct access device(デバイスタイプ=0x00)
Read-only Direct-access device(デバイスタイプ=0x05)
標準のデバイス名は “sd” で始まり、 その後に論理ドライブ番号が続き、 さらに パーティションを表す a から h の文字が続きます。
ブロックデバイスとしてディスクデバイスにアクセスした場合、 システムのバッファリング機構を仲介するので、 物理的なディスクデバイスのレコードを気にすることなく読み書きできます。
ディスクデバイスとユーザの読み書きバッファの間でダイレクトな転送を提供する ‘RAW’ インターフェースもあります。 1回の読み書きの呼び出しで一度入出力操作が行なわれるので、 RAW 入出力は多くのデータが転送されるときにかなり有効です。 RAW デバイスとしての名前は ‘r’ から始まります。
sd デバイスドライバのコンフィギュレーションファイルの指定方法は、 次のように行ないます。
controllersdc0at iop0priority n
disksd0at sdc0 drive 0flags 0
ディスクデバイスの SCSI ID 番号を priority n で指定します。
flags には、ドライブ毎の初期設定動作を指定します。
flags のビット0は、RAW デバイスの書き込み禁止を制御します。 このビットが 0 の場合、 ブロックデバイスでオープンしているパーティションに対して、 RAW デバイスでの書き込み動作を禁止します。 これにより、ファイルシステムに対して、 RAW デバイスでの誤った書き込みを防ぎます。 このビットが 1 の場合、 ブロックデバイスでオープンしているパーティションに対して、 RAW デバイスでの書き込み動作を可能にします。
flags のビット1は、 sd デバイスドライバのエラーステータスを制御します。 このビットが 1 の場合、 sd デバイスドライバの拡張エラーステータスを buf 構造体の b_error にセットします。
flags のビット 2 は、WRITE AND VERIFY 動作の制御をします。 このビットが 1 の場合、 書き込み動作の後、そのデータが正しく書き込まれたことを ECC によるメディアベリファイで調べます。
ディスクデバイスの先頭セクタにパーティションサイズ等のディスク情報が 書かれている場合は、その情報が使われます。 パーティションサイズ等のディスク情報が書かれていない場合は、 デバイス情報ファイル "/sys/newsiodev/sddefs.c" の デバイス情報テーブル sddevinfo に記述されたディスク情報が使われます。 パーティション情報が記述されていない場合、 ディスクデバイスの記憶容量から パーティションの情報を計算して使用します。
デバイス情報ファイルを追加変更することにより、 新しいタイプのデバイスを接続する事も可能ですが、 既存のデバイス情報テーブルに記述されたデータを変更することは避けてください。
デバイス情報テーブルの書式については、 ヘッダーファイル "/sys/newsiodev/sdreg.h" を参照してください。
メディアを取り外せるディスクデバイスの場合、 デバイスのオープン時にメディアを回転させます。 また、 デバイスをクローズした後、 一定時間以内に次のオープン動作がなければ、 メディアの回転を停止させます。
また、デバイスをオープンすると、 クローズするまでイジェクト動作が禁止されます。
サポートデバイス
sd デバイスドライバがサポートしているディスクデバイスは、 デバイス情報ファイル "/sys/newsiodev/sddefs.c" の デバイス情報テーブル sddevinfo に記述してあります。 また、デバイス情報テーブル sddevinfo に記述を追加することにより、 新しいタイプのディスクデバイスを使用することも可能です。
さらに、 デバイス情報テーブル sddevinfo に記述されていない ディスクデバイスを接続することも可能です。
この場合、エラー訂正方法や、データ先読みキャッシュなどの機能は、 そのディスクデバイスのデフォルトの値が使われます。
IOCTL
sd デバイスドライバは、
/sys/newsiodev/dkio.h
/sys/newsiodev/sdreg.h
/sys/newsiodev/scu.h
/sys/newsiodev/odreg.h
/sys/newsiodev/cdctl.h
で示される、いくつかの ioctl を備えています。 OS のバージョンにより、仕様が変更されることがありますので、 十分注意してください。
関連ファイル
/dev/sd[0-1][0-6][a-h]ブロックデバイス
/dev/rsd[0-1][0-6][a-h]RAW デバイス
/sys/newsiodev/sd_var.cディスクデバイス変数定義ファイル
/sys/newsiodev/sddefs.cディスクデバイス情報ファイル
/sys/newsiodev/sdreg.hioctl コマンドと構造体の定義
/sys/newsiodev/dkio.hioctl コマンドと構造体の定義
/sys/newsiodev/scu.hioctl コマンドと構造体の定義
/sys/newsiodev/odreg.h光磁気ディスク関連の ioctl コマンドの定義
/sys/newsiodev/cdctl.hCD-ROM 関連の ioctl コマンドと構造体の定義
関連事項
format(8)メディアのフォーマットコマンド
NEWS-OSRelease 4.1C