(toppers-users 771) Re: 割込みハンドラ出口処理について

Kenji Karita kkarita @ mac.com
2003年 3月 11日 (火) 15:42:33 JST


かりた です。

> 宿口ともうします。私が認識している範囲で回答します。
早速の返信有難うございます。

> 懸念されているのは、カレントタスクが無い状態で、割込みが発生したが、
> 割込みハンドラでタスクを起床・起動しなかった場合にどうなるかですね。
>
> TOPPERS/JSPでの割込み処理は、割込み出入口処理でくるむことになって
> いるので、ハンドラはこの割込み出入口処理から呼ばれます。
>
中略
>
> 割込みハンドラでタスクを起床させるなどの処理が行われた場合は、上記の
> _kernel_reqflg(カーネルコード内では reqflg と表記)がTRUEになります。
> 逆に言えば、割込みハンドラでスケジューリングされなければ、ここはFALSE
> のままですので、_kernel_ret_int へ、即ち ret_int へは飛びません。
>
> よく検証していませんが、確かに、直に ret_int が呼出されてしまうと、
> 問題が生じるかもしれませんね。
周期ハンドラなど使用している場合は、指定時間になるとタイマ割込みの中で
reqflg を TRUE にしますので起こるのではとの懸念です。
(周期ハンドラに限らず、tslp_tsk, dly_tsk 等も同じ)


>> 2.最低優先順位の番号について
>>
>>   標準で16が最低優先度です。ready_queue 配列は確かに16個の配列を
>>   用意してありますが、この ready_queue 配列のアクセス時、TCB に保存
>>   してある priority 値をダイレクトにインデックス値としている為、
>>   最低優先順位のタスクを作ると ready_queue[16] というアクセスが発生
>>      してしまう。インデックスとして(priority - 1)を使用しないといけない
>>      のではないでしょうか?
>
> 内部処理で、ご指摘の処理に変換されています。即ち、最高優先度が0、

** Cut quoted 9 lines by the mail filter. **
この件は、了解しました。やっぱり読みが浅かったですね。もっと勉強します。

宿口様、有難うございました。