On Thu, Jul 09, 2015 at 02:15:55PM +0200, Johann Obermayr wrote:
> Hello,
> 
> we have follow situation
> 
> u64 lrtdrv_time_of_irq_ns ;
> void worker_task()
> {
> while(1)
>     {
>     rtdm_task_sleep_abs(lrtdrv_time_of_irq_ns + 950000ull,
> RTDM_TIMERMODE_ABSOLUTE);
>     do_something();
>     }
> }
> 
> _kernel_rtdm_irq_handler()
> {
>     lrtdrv_time_of_irq_ns = rtdm_clock_read_monotonic();
> }
> 
> the  _kernel_irq_callback() is called every 1ms.
> we will , that the worker_task begin 50us before next irq
> 
> But sometime, the worker task start ~50us after irq. Why ?

Best way to know, enable the I-pipe tracer, setup sufficient back
trace points, and when the wrong wake up happens, trigger an I-pipe
trace.

> 
> Sometime we call xntbase_adjust_time to sync external RTC with internal
> clocks.
> can this be a problem ?

Normally, xntbase_adjust_time has no influence whatsoever on the
monotonic time. However, I suppose if you have an awful lot of
pending timers with absolute wall clock expiration dates, the
adjustment made by xntbase_adjust_time could create a large masking
section.

-- 
                                            Gilles.
https://click-hack.org

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

Reply via email to