(toppers-users 470) Re: TOPPERS/JSP の実装で教えてください。

Tatsuhiko Matsukawa KFC00725 @ nifty.ne.jp
2002年 8月 12日 (月) 23:42:37 JST


高田さん、コメントありがとうございます。

> ご指摘の通り、PC を TCB に保存する必然性はほとんどなく、スタック上に保
     : 中略
> が遅くなりそうなので、採用はしていません)。
Xstormy16の場合、integer/pointerとも16bitですので、
typedef struct task_context_block {
    unsigned short sp ; // スタックの保存域
    unsigned short mode ; // avivate_r,dispatch_r
} CTXB ;                        // ret_int_rのいずれかを
                                    // を示すフラグ
とすることで、TCBをちょうど16バイトにできました。

> JSP の実装では、少なくとも、サービスコールの中での明示的なディスパッチャ
> 呼び出し (dispatch) の中で、タスクが切り替わる必要があります。割込みに
      : 中略
> の中で、もし t_unlock_cpu のところでタスクが切り替えられるとすると、
> ercd に正しいエラーコードが取り出せません。
了解です。ixxx_yyy と xxx_yyyの共通化が難しい
ことはわかりました。

今回の調査で、気にしている点のひとつは、優先度の高い
割り込みがどれぐらい遅らされることがあるか、ということ
です。この意味で、割り込みルーチンから抜けるところでの
割り込み禁止状態での処理が長いと感じて、ディスパッチャ
を低優先度の割り込みで分離することで、少なくともこの
間で一回割り込み許可のサイクルを作れるかと考えた
のですが、良く見ると、割り込み処理ルーチンから抜け
るところの割り込み禁止区間より長い割り込み禁止が
通常のサービスコール中にあるようです。(Cで書かれて
いると短く見えますが・・・・・)
別の方法を考えてみます。

今後とも、よろしくお願いいたします。

************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************