[Armadillo:06910] POSIXタイマー割り込みタイミング

email@hidden
2011年 3月 23日 (水) 17:40:30 JST


 arnadillo-9にてPOSIXタイマーを100msec設定で動作させてみたところ、割り込み周期が不定な動きをしている様子だったので、ログで確認したところ、

->20msec
->80msec
->0msec
->20msec
->80msec
->0msec

と、3つを1つの周期として定期的に変なタイミングでタイマーイベントが発生していました。
同じモジュールをPC上のdebianで動作させたところ、概ね100msecでイベントが発生していました(一部不定周期が見られますが)。
※ テキスト添付します。

armadillo9にて定周期でイベントを発生させるために、特に設定が必要であれば、助言いただけると大変助かります。

タイマー設定部分のソースは下記のとおりです。


よろしくお願いします。

#define SIGIO_READ     SIGRTMIN +1

       /* timer create         */
       memset( &sigact, 0, sizeof sigact ) ;
       memset( &sigev, 0, sizeof sigev ) ;
       
       sigact.sa_sigaction = timer_handler ;
       sigact.sa_flags = SA_SIGINFO | SA_RESTART ;
       sigemptyset(&sigact.sa_mask);
       if( sigaction( SIGIO_READ, &sigact, NULL ) < 0 ){
           return FALSE ;
       }
       
       sigev.sigev_notify = SIGEV_SIGNAL ;
       sigev.sigev_signo  = SIGIO_READ ;
       if( timer_create( CLOCK_REALTIME, &sigev, &timerId ) < 0 ){
           return FALSE ;
       }
       
       itval.it_interval.tv_sec = 0 ;              /* every time up sec    */
       itval.it_interval.tv_nsec = 100 *1000 *1000;/*    100msec           */
       itval.it_value.tv_sec = 10 ;                /* first time up sec    */
       itval.it_value.tv_nsec = 0 ;                /*    100msec           */
       if( timer_settime( timerId, 0, &itval, NULL ) < 0 ){
           return FALSE ;
       }
       printf("\n\n complete timer setup\n");
   
     while(1){
       } ;

void   timer_handler( int signum, siginfo_t *info, void *ctx )
{
       if( signum != SIGIO_READ ){
           return ;
       }
       
       if( info->si_code != SI_TIMER )
           return ;
       
       int     w_start ;
       
       printf("\n\n timer_handler() \n" ) ;
       printf(" signum = %d define = %d \n", signum, SIGIO_READ ) ;
       w_start = clock() ;
       printf("  time = %d.%03d msec  ------------->  \n", w_start /1000, w_start %1000 ) ;


}


-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: armadillo9.txt
URL:  <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20110323/89d87cb1/attachment.txt>
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: debian.txt
URL:  <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20110323/89d87cb1/attachment-0001.txt>


armadillo メーリングリストの案内