[Suzaku:01922] Re: Kernel エラー

mizo email@hidden
2010年 8月 24日 (火) 10:17:50 JST


溝渕です。

Nobuaki Sugishima wrote:
> その後分かったこと
> 1.mymainの冒頭でドライバ側に大量データ転送前に、ドライバ側にある書込み
> ポインタをクリアしているところがあります。あるレベルをONにしてWAITの
> 後、OFFにしているのですが、busy_wait(100000);つまりソフトタイマーを
> 使っていました。これではMain側がリソースを独占、ドライバは動けません。
>  初回が比較的うまくいくのはinsmodのときにこのポインタをクリアして
> いるからです。そこでWAITをprintf文に置き換えたところ改善が見ら
> れました。printf文は実行途中でコントロールをOSに戻す機能があると
> 思うのですが、これは誤解でしょうか?

printf()は最終的にはシステムコールを呼んでいます。

> 2.ctrl−cによりmymainだけがBreak、ドライバ側は”無傷”のような錯覚を
> していましたが、rmmodをすると、存在しない領域を解放しようとしたとい
> うエラーがでることがあります。存在しない領域に書き込もうとしたのですから
> エラーになるのは当然です。
> つまりrmmodと再度のinsmodは必須のようです。このエラー表示の後、継
> 続実行できるケースと不可能のケースがありその理由はわかりません。

意図していないところで動的確保したメモリを開放してしまっていませんか?

>  結論としてmyminのソースを変更するたびにSUZAKUの電源再投入を
> するのが無難のようです。
> 
>  なにかアドバイスがあればお願いします。

自作のアプリケーションおよびドライバのことなので、アドバイスし難いです。

不具合該当箇所のソースを見せていただくことは可能ですか?ソース丸ごとではなく、
不具合を再現できる最小のソースファイルであるとアドバイスしやすいです。




suzaku メーリングリストの案内