Hi Philippe,
Thank you for the suggestion. I will give it a try and let you know.

Regards
Bharath

On Wed, Aug 25, 2010 at 4:22 PM, Philippe Gerum <r...@xenomai.org> wrote:

> On Wed, 2010-08-25 at 12:06 +0200, Bharath Achuta Bhat wrote:
> > Hi  Philippe,
> > It is an mmap-ed I/O memory.
>
> This is a TLB miss which ends up in a heavyweight call to fill the linux
> page table entry. Try to pre-fault the I/O memory region if possible,
> reading some bytes within the same 4k page.
>
> >
> >
> > Regards
> > Bharath
> >
> > On Wed, Aug 25, 2010 at 11:53 AM, Philippe Gerum <r...@xenomai.org>
> > wrote:
> >         On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
> >         > Hello Xenomai experts,
> >         >
> >         >
> >         > I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3)
> >         with ipipe
> >         > version 2.7-06.
> >         > The target is powerpc (MPC8533E).
> >         > My application is switching to the secondary mode (I guess
> >         because of
> >         > a page-fault) when ntohl() is called.
> >         > This is a libc function and I am wondering why only this
> >         function
> >         > (ntohl()) is causing a page-fault.
> >
> >
> >         What memory are you reading from / writing to in the statement
> >         involving
> >         ntohl()? Is this plain RAM, or mapped I/O memory?
> >
> >         >
> >         >
> >         > Here is how the application looks like
> >         >
> >         >
> >         > main ()
> >         > {
> >         > ...
> >         > ...
> >         > /* Avoids memory swapping for this program */
> >         > mlockall(MCL_CURRENT | MCL_FUTURE);
> >         >
> >         >
> >         > ......
> >         > ......
> >         > /* signal handlers */
> >         > .....
> >         > .....
> >         > /* create communication pipes */
> >         > rt_pipe_create(&tPipe1, .....
> >         > rt_pipe_create(&tPipe2,.......
> >         >
> >         >
> >         > /* create RT tasks */
> >         > rt_task_create(&tTask1,.....
> >         > rt_task_create(&tTask2,......
> >         > ...........
> >         > ..........
> >         >
> >         >
> >         > /* start the RT tasks */
> >         > rt_task_start(&tTask1,.....
> >         > ..............
> >         > ..............
> >         >
> >         >
> >         > /* turn the current thread into RT function */
> >         > ret = rt_task_shadow(NULL, "RT main function", 1, T_SUSP);
> >         >
> >         >
> >         > ....
> >         > ....
> >         >
> >         >
> >         > }
> >         >
> >         >
> >         > One of the rt tasks created calls ntohl() and switches to
> >         secondary
> >         > mode.
> >         > Is there a way to avoid it ?
> >         >
> >         >
> >         > --
> >         > Thanks and regards
> >         > Bharath
> >         >
> >
> >         > _______________________________________________
> >         > Xenomai-help mailing list
> >         > Xenomai-help@gna.org
> >         > https://mail.gna.org/listinfo/xenomai-help
> >
> >         --
> >         Philippe.
> >
> >
> >
> >
> >
> > --
> > Thanks and regards
> > Bharath
> >
>
> --
> Philippe.
>
>
>


-- 
Thanks and regards
Bharath
_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to