On 04/23/2013 07:42 PM, Tom Z wrote:

> Hi Philippe,
> 
> Thanks for answering my previous question. However, I encountered another one 
> regarding rt_task_wait_period(). NowI fixed a problematic parameter in 
> rt_task_set_periodic(), and add the checking of the return values of 
> rt_task_wait_period() and rt_task_set_periodic(). I use 
> rt_task_set_periodic()to set a period of 500 ms for a rt_task, and call 
> rt_task_wait_period() later. It seems that sometimes 
> rt_task_wait_period()works good, but sometimes it just returns 0 immediately. 
> Here is what my code looks like:
> 
> unsigned long overrun;
> RTIME release_time;
> 
> if (0 != rt_task_set_periodic(NULL, TM_NOW, 500000000){
>               rt_printf("Error\n");
> }
> ....
> while (1){
>     release_time = rt_timer_read();
>     //Store release_time in an array for offline analysis
>     //Some computation taking about 100 ms
>     if (0 != rt_task_wait_period(&overrun)){
>              rt_printf("Error\n");
>       }
> }
> 
> 
> I noticed that, during the program's execution, no "Error" was printed, but 
> some consecutive values of release_time is about 100 ms which is the 
> computation time and far less than the period 500 ms.
> 
> This problem seems weird to me. Did I possibly overlook something?


A piece of code is worth a thousand words. Please send a self-contained
test example showing the behaviour you suspect is wrong. Only the C code
of the test is needed in the mail body, a tarball containing code and
Makefile is useless, we know how to compile programs for Xenomai.

-- 
                                                                Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to