(toppers-users 2281) 時間計測とsyslog
Tetsuo TAKAHASHI
tetsu-t @ mbd.ocn.ne.jp
2006年 2月 2日 (木) 00:56:03 JST
高橋と申します。
SH4 7750 をターゲットに使用した開発を行っています。
今のところターゲットがないので、サンプルとしてMS7750SE01を
用いて試用しています。
ターゲットに載せる予定の処理が、想定している時間内で終了するかど
うかを確認する為、
以下のようなテストを実施しています。
1.タスク1つのみを実行する。
2.1.のタスク内で必要な処理(処理A)を実行する。
3.処理Aが、どのくらいの処理時間が必要なのか測る為、処理
Aの前後で時刻を取得。
4.時刻の取得には、vxget_tim()を使用する。
5.取得した2つの時刻から、処理時間を計算し、syslog()
で出力する。
下記の様なコードになります。
#簡略化して書きます。
main_task()
{
...
vxget_tim(&t1); // start time
example();
vxget_tim(&t2); // end time
time = t2 - t1;
syslog(LOG_NOTICE,"time %d",time);
...
}
ここで、質問というか疑問なのですが、時間計測の前後(start time/
end timeの外側)で、
別途syslog()で文字の出力をしようとした所、上記で実施してい
る時間計測に1secオーダ
の違い(3secで終了するはずが5secかかるとか)が出
ました。
具体的には、
main_task()
{
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
vxget_tim(&t1); // start time
example();
vxget_tim(&t2); // end time
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
syslog(LOG_NOTICE,"aaaaaaaaaaaaa");
time = t2 - t1;
syslog(LOG_NOTICE,"time %d",time);
}
と言う記述をしてます。
時間計測の間にsyslog()を入れたのであれば、当然時間が変化す
るのは分かるのですが、
外側に入れて処理Aの処理時間が変わる(というか時刻の取
得タイミングが変わる?)原因が
つかめないでいます。
このような現象について、何かご存知の方はいらっしゃらないでしょう
か?
それとも、そもそも何か間違っているのでしょうか?
PS:
config/sh3/solution_engine/ms7750se01.h
内の記述で、
/*
* キャッシュモードの設定
* P0,U0,P1ライトスルーモード
*/
#define CCR_MODE 0x0000898d
とありますが、コピーバックモードの設定のように見えるのです
が・・・。
SHの設定は、経験が少ないので勘違いかもしれません。
--
// Tetsuo TAKAHASHI <tetsu-t @ mbd.ocn.ne.jp>