NAME
si − Specialix International SI/XIO および SX インテリジェントシリアル カードのためのドライバ |
書式
device si0 |
device si0 at isa? tty irq 12 iomem 0xd0000 |
解説 |
Specialix の SI/XIO および SX ハードウェアは 8 ポートから 32 ポートの RS-232 シリアルマルチプレクサを構成します。 上の 1 行目は EISA と PCI ホストカード用で、2 行目は ISA ホストカード用の ものです。 システムは 2 つの部分を使います: 「ホストアダプタ」は ISA、EISA あるいは PCI スロットに挿入され、 37 ピンケーブル形式の外部バスと、制御とデータの バッファリングおよび処理を行う能力を提供します。 このケーブルには「モジュール」が接続されます。 "SI" モジュールは 4 ポート あるいは 8 ポートのバージョンがあります。"XIO" および "SX" モジュールは 8 ポートのバージョンだけがあります。 ホストアダプタはデータをポーリングし、モジュールとマシンの間の転送を行な います。ホストアダプタは、制御できる 32 個のポートのそれぞれについて 256 バイトの送信用および 256 バイトの受信用 FIFO バッファを提供します。 XIO モジュールは 8 個のポートそれぞれについて 115,200 ボーで使用できま す。SI バージョンは 57,600 ボーです。 SX モジュールは 8 個のポートそれぞ れについて最大 921,600 ボーで使用できます。 SX モジュールは SX ホストカードに接続されている場合にのみサポートされま す。SI または XIO はどのホストカードでもサポートされています。 ホストアダプタは、ISA バスの 0xA0000 から 0xEFFFF までの間にある伝統的な "穴" にある共有メモリブロックを使用します。アダプタ自体はそれ以外の範囲に も設定できますが、そのメモリ領域は明示的に非キャッシュ状態にしておく必要 があります。ドライバは、このモードでの使用をまだサポートしていません。 SX の ISA ホストカードは、8 ビットモードと 16 ビットモードを切り替えるス イッチまたはジャンパを持っています。このスイッチまたはジャンパは、8 ビッ トモードにセットされていなければなりません。 ISA アダプタは IRQ 11, 12, 15 を利用できます (さらに、SX ホストカードでは IRQ 9 と 10 が利用できます)。 si デバイスドライバは、実行時にいくつかの設定を sicontrol(8) ユーティリ ティで変更することができます。 si デバイスドライバはクローズオンドレイン (drain-on-close) のタイムアウト を設定するための comcontrol(8) ユーティリティにも反応します。 ドライバは 3 個の 操作可能な sysctl 変数を定義しています: machdep.si_debug は、ドライバ全体のデバッグレベルを設定します。これを利用 するには、ドライバが SI_DEBUG フラグ付きでコンパイルされている必要があり ます。 machdep.si_pollrate は、割り込みが消失したときのためにドライバが 1 秒間に何回ポーリングするかを設定します。 machdep.si_realpoll は、毎回の ポーリングの際に、割り込みが発生したかのように扱うかどうかを設定します。 si ドライバが制御する /dev のデバイスノードに対するオープンは、 sio(4) ド ライバと同じセマンティクスで動作します。このドライバは、cua ポートの通常 のセマンティクスと "初期状態の termios" および "ロックされた termios" の 設定を完全にサポートします。簡単にまとめると、 O_NONBLOCK がセットされて いない限り、tty ポートのオープンは DCD が上がるまでブロックされます。 CLOCAL も効きます。これを設定すると、cua ポートのオープンは常に成功します が、ひとたび DCD が上がってからは、DCD の変化も効きます。 si ドライバは SI/XIO ホストカードを最大 4 枚まで制御できます。割り込みが 足りないため、同時に使用できる SI/XIO ホストカードは 3 枚までです。 マイナデバイス番号の下位 5 ビットは、モジュールクラスタ上のポート番号を選 択するために使われます。次の 2 ビットは 4 枚のホストアダプタカードのどれ を選択するかを決めます。これにより、このドライバ上で最大 128 個のポートが 利用可能になります。 bit 7 で tty/着呼ポート (bit 7=0) と cua/発呼ポート (bit 7=1) を区別しま す。 bit 7 から bit 15 ( FreeBSD において) はメジャーデバイス番号の影にあたる ため利用できません。 bit 16 が 1 であれば、そのデバイスノードは "初期状態" デバイスであること を示します。この "初期状態" は、最初にオープンされた時にデバイスの termios(4) の設定を準備するために使われます。 bit 17 が 1 であれば、"ロッ ク状態" デバイスであることを示します。 "ロック状態" は、 termios(4) の設 定の変更を阻止するために使われます。 初期 / ロックの設定を操作するためには、 stty(1) コマンドを使うとよいで しょう。 "ロック" 変数の設定においては、ロックデバイスのモードを有効にす ると、 termios(4) のモードがロックされます。逆に、ロックデバイスのモード を無効にすると、 termios(4) のモードがロック解除されます。 |
ファイル
/dev/si_control
sicontrol(8) が使用する、ドライバを制御するグローバルな
ファイル。 関連項目 |
stty(1), sio(4), termios(4), tty(4), comcontrol(8), sicontrol(8) |
歴史
このドライバは Specialix 由来のドライバコードをおおざっぱにベースとしてお り、 Andy Rutter 〈andy@specialix.co.uk〉 が BSDI で動かすために移植しまし た。 System V 用のドライバソースが ftp で ftp.specialix.co.uk. から入手 可能です (入手可能でした)。 Specialix International はこのドライバをサポートしていません。 |
作者
Peter Wemm 〈peter@netplex.com.au〉 が Andy
Rutter からコードを得て、 FreeBSD
へ移植しマニュアルページとともに提出しました。 |
バグ
割り込みのチューニング比は、現在のところ最大の効率を得られるように最適化 されていないと思います。 ポーリングモード (Specialix による標準ドライバの特徴) は実装されていませ んが、machdep.si_realpoll をオンにすることで似た動作とすることができま す。ポーリング周期は machdep.si_pollrate で設定します (1/100 秒の単位で す)。 このドライバは、SX モジュールで 115,200 より大きいボーレートをまだサポー トしていません。 伝統的な ISA の "穴" の外での動作はまだサポートされていません。プローブ ルーチンから穴のテストを削除すれば動くはずですが。 複数のホストカードはサポートされていますが、異なるバスタイプのホストカー ドの組み合わせについてはテストされていません。- デバイスの番号づけに問題 があることが分かっています。予期しない結果を招くかもしれません。 |