(toppers-users 572) Windows 版のバグ報告
Takayuki WAKABAYASHI
takayuki @ ertl.ics.tut.ac.jp
2002年 10月 8日 (火) 11:06:39 JST
TOPPERS/JSP Windowsシミュレーション環境をご利用の皆様へ
豊橋技術科学大学の若林です。
TOPPERS/JSP Windows シミュレーション環境において、バグが見つかりましたの
で報告します。
---8<---
症状
実行状態のタスクが終了した後、割込み要求が発生するまで
次のタスクへのディスパッチが遅延される。
発生頻度
常に
対象
過去の全バージョン (JSP 1.0β - 1.3)
再現方法
1. カーネルクロックドライバを外した状態で、2つの優先度の異なるタスクを
実行し、高優先度のタスクをext_tskで終了させると、低優先度のタスクが
起動しない。
2. カーネルクロックドライバを使用している状態で、2つの優先度の異なるタ
スクを起動し、高優先度のタスクをext_tskで終了させてから次のタスクが
起動するまでのディスパッチ時間を計測すると、CPUの速度に関係なく
100ms近い値(1タイマティック)が出力される。
問題の場所
exit_and_dispatch()関数
(jsp/config/windows/cpu_config.c:77)
修正
exit_and_dispatch()関数を、次のように書き換える。
修正前 > HALDestroyRequest(runtsk);
修正後 < HALDestroyRequest(0);
原因
論理的な間違い (HALDestroyRequestの引数設定ミス)
# runtskが対象のときは0を指定するよう定めていたが、
# runtskの持つアドレスが直接指定されていたため、
# 他タスクの破壊と勘違いしてプログラムが誤動作する。
# 割込み要求後に正常に動作するのは、割込み復帰時に
# ディスパッチルーチンが起動するため。
---8<---
以上 ご対応よろしくお願いします。
--------
わかばやし たかゆき (mailto:takayuki @ ertl.ics.tut.ac.jp)