Yoshinori Sato
ysato****@users*****
2005年 5月 25日 (水) 12:05:31 JST
At Wed, 25 May 2005 09:42:38 +0900, Masakatsu Suzuki wrote: > > 鈴木です。 > > strawberry-linuxのホームページからダウンロードした環境をベースにして作業しています。 > シリアルインターフェースを使用したいのですが、シリアルドライバ(sh-sciドライバ)の動作が > とても不安定です。 > > シリアルドライバをopen()/read()関数で制御しようとするとメモリ不足(?)で > > リブートもしくはハングしてしまいます。 > > 電源ON時、screen shotがコンソールに流れているときにオーバーランが発生して > カーネルパニックになったりもしました。(原因不明−解析難航中)。 > 仕方がないので、割り込みハンドラを自作したいのですが、 > 割り込みハンドラをどのように作成すればよいのか調査中ですが、現在のところ > 見当がつかなくて困っています。 > ユーザプログラムで割り込みベクタ、割り込みハンドラを使用する方法をご教授願います。 > > よろしくお願いします。 > 起動時のメッセージに "virtual vector at 〜" という行があると思いますが、そこ に出てくるアドレスに割り込みをフックするためのテーブルがあります。 割り込みベクタテーブルをダンプするとわかると思いますが、割り込みが発生すると、 一旦このテーブルを経由して本来の割り込み処理へ飛ぶようになっています。 ということで、ここを書き換えてしまえば kernel を経由しないで割り込みを受ける ことが出来ます。 自分の方に向けるのであれば、 jmp @int_handler に書き換えてしまうのがいちばん簡単でしょう。 -- Yoshinori Sato <ysato****@users*****>