On 11/04/2011 03:42 AM, yibo dai wrote:
> In my current project, there is a xenomai thread in the user space,It
> doing the following things:
> 1.recieve the TIPC message from other services then handle it
> 2.recieve the packet from RTNet then handle it
> Program is probably as follows:
> while(1) {
>       select(...); /*block and waiting for TIPC messages */
>       /*do something*/
>       
>       do {
>               ret = rt_dev_recvmsg(...,MSG_DONTWAIT); /*recieve packets from 
> RTNet*/
>               /* do something */
>       } while(ret > 0);
> }
> 
> the RTNet stack will trigger a virtual interrupt(use the
> rtdm_nrtsig_pend) when recieved a packet,then the virtual interrupt
> handler will send a SIGUSR2 to the xenomai thread,...,at last the

When you do that, you cause the real-time thread to switch to secondary
mode, it means, it is no longer real-time, and using RTnet is in fact
pointless.

> xenomai thread wake up.the problem is the xenomai thread will crash
> when calling rt_dev_recvmsg sometimes.i found that
> ops->operation##_nrt(i.e. ops->recvmsg_nrt) will be call(in the
> MAJOR_FUNCTION_WRAPPER_TH),but ops->recvmsg_nrt is NULL,so the xenomai
> thread crash.

It is hard to say anything without seeing any code.

> is my usage wrong?

Yes.

why the current domain become linux when executing
> xenomai syscall?

Because you are executing a syscall which does so, not all syscalls do that.

by the way,what is the reason to remove
> CONFIG_XENO_OPT_ISHIELD?

It had problems of its own. Beside, it gave the false impression that
thread could have some real-time guarantees in secondary mode.

-- 
                                                                Gilles.

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

Reply via email to