(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)