(toppers-users 2447) Re: TOPPERS/FI4 のバグ

takaya_kakizaki @ gmx.yamaha.com takaya_kakizaki @ gmx.yamaha.com
2006年 6月 13日 (火) 13:57:22 JST


柿崎です。

前者の件について補足します。
タスクAにおいて、acp_porを呼び出し、
タスクAをランデブポートの受付待ち状態にします。
その後タスクBで、同じランデブポートのcal_por(tcal_por)を呼び出しランデブを
成立させます。
このときタスクAとタスクBの優先度は同じにしてあります。
cal_porを呼び出したとき、CPUロック状態でもディスパッチ禁止状態でもありませ
ん。

このとき
unknown error reported by 
`tcal_por(SAMPLE_POR,TEST_RDV,&rcvdata,sizeof(rcvdata)
,10000)' in line 254 of `sample1.c'.

といったログメッセージを出力します。

>このため、ディスパッチ保留状態であれば、ディスパッチは発生しません。
>ディスパッチが起こる状態で、かつディスパッチが必要である場合に、
>wait_completeはTRUEを返します。

>#TOPPERSのITRON仕様OSの実装では、タスクの状態変更を行う関数の返値は、
>#その時点でディスパッチが必要か必要でないかを示しています。

ディスパッチを発生させる要因はwait_completeではなく、
その前のwobj_make_waitにあるのですが、それでも成り立ちますか。



------------------------------------------------------------------------

>> もうひとつ、可変長メモリブロックを獲得するときに
>> 待ち状態にはいるとメモリを獲得できなくなります。
>(略)
>> これは変数の初期化忘れですかね。
>これは、待ちタスクが確保したいブロックを、rel_mpl()中で
>((WINFO_MPL *)(tcb->winfo))->blkszとして参照して
>いるのに、get_mpl()で設定していないということでしょうか。

これはおっしゃるとおりです。

>それであるならば、以前FI4のバグデータベースが、TOPPERS
>プロジェクトの会員でなくてもアクセスできたときに、そのバグ
>が登録されているのをみた覚えがあります。

>ただし、現在のリリースでは修正されていないようですね。

だとすると、今のところは各自で修正を施すしか方法がないということでしょうか
。


------------------------
柿崎 貴也
ヤマハ株式会社 サウンドネットワーク事業部
サウンドネット開発部
E-mail: kakizaki @ soundnet.yamaha.co.jp
Tel. 053-460-2535 Fax. 053-460-8023