(toppers-users 655) Re: config.txt について

Hiroaki TAKADA hiro @ ertl.ics.tut.ac.jp
2002年 11月 28日 (木) 11:24:29 JST


斉藤さん wrote:
> # だんだん頭が混乱してきています.

そうですね。話題が細かすぎるレベルになってきましたね。興味のない方は無
視していただけると幸いです。

> 元々の疑問は, ターゲット依存部の dispatch のコメントと
> config.txt の記述が何故異なっているのか, という事でした.

すみません。その点を見落としていまいた。確かに整合していませんね。そう
いう意味では、

> 「CPUロック状態で呼ばれる」の方が正しいとするならば,
> dispatch のコメントは「CPUロック状態で呼び出さなければならない」
> もしくは「CPUロック状態で呼び出される」となっていても
> 良いのではないだろうか ? とも考えたのですがそれはさておきまして,

については、「CPUロック状態で呼び出される」で正しいです。

「CPUロック状態で呼び出さなければならない」でもいいとは思いますが(そ
こまで深く考えてコメントを書いていません...)、厳密ではありません。そ
のプロセッサ依存部の dispatch が、本当に、CPUロック状態で呼び出さなけ
ればならないとするなら、この記述が正しいわけですが、割込み禁止であるこ
としか要求していなければ、書きすぎということになります。

dispatch のコメントに「割込み禁止」とある理由ですが、m68k の dispatch 
のコメントを見ると、

 *  dispatch は,マスタモード・割込み禁止状態で呼び出さなければならな
 *  い.

とあります。マスタモードというのは、m68k の用語ですので、このコメント
は、プロセッサレベルで記述してあります。そのために、CPUロック状態とい
う用語を使わなかったと思います。

> 何故 dispatchの呼出される条件について「より強い条件」が必要なのか
> という疑問は残っているのですが, 仰る内容は理解できます.

例えば、CPUロック状態を、割込みを禁止することに加えて、ある変数をセッ
トするような実装が考えられます。このような場合、「割込み禁止で呼ばれる」
と書いてあれば、その変数がどうなっているかは保証されません。よって、
dispatch はそれに依存しないように実装しなければなりません。それに対し
て、「CPUロック状態で呼ばれる」と書いてあれば、その変数がセットされて
いることも保証されます。

これも、こういうプロセッサ依存部がなければ、無意味な議論なのですが...

> 「dispatch() はCPUロック状態で呼びだされている」という事実は理解できたのですが,
> その理由がよくわかりませんでした.
> (1) 「dispatch() の処理の性格上, CPUロック状態で呼ばなくてはならない」からなのか,
> (2) 「dispatch() をどのような状態で呼び出すかはカーネルの実装者に任せられた話で,
>     TOPPERS/JSPカーネルでは CPUロック状態で呼ぶこととしている」からなのか,
> (3) 「サービスコール処理はその大半を CPUロック状態で処理しているので
>     (その流れで)dispatch()を呼び出す時にはCPUロック状態で呼ばれることになる」からなのか.
> (4) その他
> dispatch() が「より強い条件」で呼ばれなければならない, ということからすると
> (1)なのかなと考えています.

(2) です。もちろん、その背景には (3) があります。

高田広章
豊橋技術科学大学