All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] xenomai thread crash
@ 2011-11-04  2:42 yibo dai
  2011-11-04 14:11 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 3+ messages in thread
From: yibo dai @ 2011-11-04  2:42 UTC (permalink / raw)
  To: Xenomai-help

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
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.
is my usage wrong?why the current domain become linux when executing
xenomai syscall?by the way,what is the reason to remove
CONFIG_XENO_OPT_ISHIELD?
Thanks very much!!


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Xenomai-help] xenomai thread crash
@ 2011-11-04  3:01 yibo dai
  0 siblings, 0 replies; 3+ messages in thread
From: yibo dai @ 2011-11-04  3:01 UTC (permalink / raw)
  To: Xenomai-help; +Cc: Xenomai-core

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
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.
is my usage wrong?why the current domain become linux when executing
xenomai syscall?by the way,what is the reason to remove
CONFIG_XENO_OPT_ISHIELD?

system info:
Xenomai version:2.5.3/2.5.6
RTNet version:0.9.12
Linux version:2.6.28
Adeos patch:adeos-ipipe-2.6.28.10-arm-1.12-07.patch
processor:at91sam9260

Thanks very much!!


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Xenomai-help] xenomai thread crash
  2011-11-04  2:42 [Xenomai-help] xenomai thread crash yibo dai
@ 2011-11-04 14:11 ` Gilles Chanteperdrix
  0 siblings, 0 replies; 3+ messages in thread
From: Gilles Chanteperdrix @ 2011-11-04 14:11 UTC (permalink / raw)
  To: yibo dai; +Cc: Xenomai-help

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.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-11-04 14:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-04  2:42 [Xenomai-help] xenomai thread crash yibo dai
2011-11-04 14:11 ` Gilles Chanteperdrix
  -- strict thread matches above, loose matches on Subject: below --
2011-11-04  3:01 yibo dai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.