[Armadillo:04072] Armadillo-220 でのsetitimer
nakamura
email@hidden
2009年 3月 2日 (月) 16:46:52 JST
中村と申します。
Armadillo-220で、setitimer()で次のような現象がでています。
このような現象について、何か情報をお持ちの方はいらっしゃいますか?
●現象
10〜19msecを指定すると30msec間隔でシグナル発生。
20〜29msecを指定すると40msec間隔でシグナル発生。
30〜39msecを指定すると50msec間隔でシグナル発生。
...
100〜109msecを指定すると120msec間隔でシグナル発生。
110〜119msecを指定すると130msec間隔でシグナル発生。
...
と、指定した時間[msec](を10で切り捨てた値)より20msec多い時間間隔で
SIGALRMが発生するようです。
100msecがほしいときには80(〜89)msecを指定すれば目的は達せられるのですが、
なんとも気持ちが悪いので、もし原因がわかれば・・・、と思い、
投稿させていただきました。
同じプログラムを開発環境であるATDE2(Debian)や他のLinuxマシン(CentOS)で
動かしても、このようなことはおきません。
●タイマのセット(interval:msec)
it.it_value.tv_usec = interval * 1000;
it.it_value.tv_sec = 0;
it.it_interval.tv_usec = interval * 1000;
it.it_interval.tv_sec = 0;
setitimer(ITIMER_REAL, &it, NULL);
●シグナルハンドラの処理:
gettimeofday(&tv[count++], NULL);
なお、シグナルハンドラは sigaction(SIGALRM, ...) でセットしています。
使用しているカーネルとユーザランドは、
linux-2.6.12.3-a9-15
atmark-dist-20080717
です。
MLのアーカイブを検索してみたところ、[Armadillo:03136]で
http://lists.atmark-techno.com/pipermail/armadillo/2008-July/003136.html
| インターバル時間を10msecに設定し実行してみたところ、
| インターバル時間が約3倍になっているようなのです。
というものがありましたが、他にはこれといった情報は見つかりませんでした。
(この方の"10msecの3倍"というのが、私の10msecのときと同じと言えば
同じなのですが、この方が他の時間を指定したときのことは書いてないです)
よろしくお願いいたします。
--
なかむら
armadillo メーリングリストの案内