[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PowerPC portingのtimebase処理について



 齊藤masanobuです。

 > 初めまして。林と申します。
 > 
 > timebaseの処理について質問(疑問?)があってメールしました。
 > 
 > PowerPC系のporting内(powerpc/ibm4xx,macppc,ofppc,evbppc,mvmeppc...)
 > のclock.c内の関数"decr_intr"の処理で、SPL_CLOCKより上の割り込みが入って
 > いた場合の処理が微妙に違っています。
 > 
 > SPL_CLOCKより上の割り込み(SPL_SCHED等)が入っている時にdecr_intrを呼ぶと、
 > (1) ci->ci_tickspendingにnticksを加えてreturn。
 >  (macppc, evbppc/ev64260)
 > (2) 通常の処理をして(SPL_CLOCKが入ってない時と同様に)return。
 >  (powerpc/ibm4xx, ofppc, mvmeppc)
 > 
 > の2種類のPowerPC用のportがあります。
 > 
 > 個人的な意見としてはどうみても(1)が正解で(2)は間違いのように見えるのですが
 > 他の人の意見を聞きたくてメールしました。
 > ((2)の場合条件によってはmicrotimeが手前に戻る?)
 > 
 > 実際どうなのでしょうか?
 > 誰かその辺り詳しい方いらっしゃいましたらコメントを頂けると嬉しいです。

(1) です。(2) だとそもそも splclock() なのに hardclock() 呼ぶことになり
ますよね?

ci_tickspending に足すことが連続して起こるような状態になると、その状況から
戻った時に realitexpire() 内で splclock() でぐるぐるまわってしまうという
これまた困った状況になるので

	http://mail-index.netbsd.org/current-users/2004/07/29/0006.html

もやっておくことをおすすめします。今言っている状況でなくても単に時間を
大幅に飛ばしただけ (たとえば date コマンドで 1970 年から 2005 年へとか)
で簡単に起きるんですけどね (ということに僕が気がついたのは 1999 年…。
昔、SH でやっていたころ、date コマンドで日時を合わせるとその直後に
30 秒ピクリと止まってしまうということがありました…)。

 > PS.
 > port-powerpc@NetBSDにもメールしたのですがシカトされました…
 > おそらく英語が稚拙だったからなのですけれど。

メールが溜っているので読めていません…。

----------------------------------------------------------
		SAITOH Masanobu (masanobu@iij.ad.jp
				  msaitoh@netbsd.org)