On Thu, 2007-08-02 at 12:54 +0200, Johan Borkhuis wrote:
> Philippe Gerum wrote:
> > On Thu, 2007-08-02 at 11:47 +0200, Johan Borkhuis wrote:
> >   
> >> I am experiencing an unexpected switch to secondary mode in a 
> >> rt_timer_tsc2ns call from userspace.
> >>
> >> The following code give a switch:
> >>     SRTIME timeStamp;
> >>     timeStamp = rt_timer_tsc2ns(rt_timer_tsc());
> >>     while((rt_timer_tsc2ns(rt_timer_tsc()) - timeStamp) < (usecs*1000)) {}
> >>
> >> while the following code does not:
> >>     RTIME timeStamp;
> >>     timeStamp = rt_timer_tsc();
> >>     while((rt_timer_tsc() - timeStamp) < (usecs*1000)) {}
> >>
> >> (I know that the second example causes a longer timeout, but this was to 
> >> show the testcase).
> >>
> >> When splitting up the 2nd line in the first example I see that the 
> >> rt_timer_tsc() call does not cause a switch, but the rt_timer_tsc2ns 
> >> does. What am I doing wrong here?
> >>
> >> I am using Xenomai-2.3.2.
> >>
> >>     
> >
> > - Which CPU architecture, and which Adeos patch release are you using?
> >   
> Processor: ppc 85xx, patch 1.5-03, Xenomai 2.3.2
> 
> > - How do you notice the switches, SIGXCPU or /proc/xenomai/stat?
> >   
> SIGXCPU
> 

So it's unfortunately possible to experiment such switches on ppc hw for
now. It is likely happening when the ns value is copied back to a user
variable for which there is a PTE miss to handle in Linux kernel space
first. Check the mail archive about "pte", "cow" (copy-on-write) and
such things.

> Kind regards,
>     Johan Borkhuis
> 
-- 
Philippe.



_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to