Hi,
On Tue Oct 20, 2009 at 16:20:03 +0800, Guanghui, Cheng wrote:
When i use the ex_regs system call to trigger the exception ipc it seems to be frozed in the do_ipc stange. I use jdb to debug this current thread lists is like this:
9.04 l4ertl.exceptio 10 9.03 rcv,ipc_progr 9.03 l4ertl.timer0 10 9.02 rcv,ipc_progr 9.02 domain2.main 10 9.04 rcv,ipc_progr,exc_progr
l4ertl.exceptio is the pager of domain2.main. And now l4ertl.timer0 is executing ex_regs system to trigger exception for domain2.main. l4ertl.exceptio is waiting for the exception ipc from the l4ertl2.main2. In detail l4ertl.exceptio is in ipc (user level registers). l4ertl.timer0 is in ipc (user level registers), too. domain2.main is in the exception 255. It seems to be dead lock in the kernel. Very strange.
I think that's what the L4_THREAD_EX_REGS_NO_CANCEL flag is about. 'cancel' here means that a possibly ongoing IPC is being canceled, i.e. aborted. When you remove the flag, the IPCs will be aborted and return.
Adam