[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Return key problem was fixed(RE: wscons, display and keyboard are available)



-----Original Message-----
差出人 : TAKEMURA, Shin <takemura@netbsd.org>
宛先 : port-hpcmips-ja@jp.netbsd.org <port-hpcmips-ja@jp.netbsd.org>
日時 : 1999年11月2日 21:39
件名 : RE: wscons, display and keyboard are available

>リターンキーが入りっぱなしになるのはこれから調べてみます。


wscons でリターンキーが入りっぱなしになるのをすこし修正しま
した。MC-R500 でちょっと使ってみた分には不具合は修正され
たようです。

wscons と tty の仕組みがよくわかっていないので、最後まで
追っていないのですが、vrkiu の割り込みハンドラから呼び出さ
れる wsdisplay.c の wsdisplay_kbdinput() の以下の tty の処理
のなかで、 bitmap スクリーンの描画処理(特にスクロールアッ
プ)が行われているのではないかと思います。

    (*linesw[tp->t_line].l_rint)(KS_VALUE(ks), tp);

TTY の割り込みレベルから遅い scroll up が行われること自体も
問題だと思いますが、今回の問題は、これらの処理が終了した
後に KIU の割り込みレジスタに 1 を書き込んで割り込みをクリア
していたことです。
kernel 側で長時間割り込みを禁止してもキーの取りこぼしはおこ
らないと思いますが、KIU の割り込みレジスタのクリアがあまり
遅れるとこの間のキーイベントを取りこぼすことがあります。

取りこぼすというか、キーに変化があった場合にだけ割り込みが
発生するモードを使っているようなので、次のキー変化の際まで
検出が遅れます。

キー検出ルーチンから tty の処理に行くので、キー検出ルー
チンに行く前に KIU の割り込みレジスタをクリアしてしまうことに
しました。(ちょっと考えた分には問題はなさそう??)

Takemura