Hannes Mayer wrote:
 > 
 > Gilles, now I think I've got what you mean.
 > 
 > Something like this ?
 > 
 > inter_domain_irq = ipipe_alloc_virq();
 > ret = request_irq(inter_domain_irq, linux_handler, SA_INTERRUPT, 
 > "virtualIRQ", NULL);
 > enable_irq(inter_domain_irq);
 > 
 > void ipipe_handler(unsigned irq) {
 >      [...]
 >      ipipe_trigger_irq(inter_domain_irq);
 >      [...]
 > }
 > 
 > void linux_handler(void) {
 >      wake_up_interruptible(&skeleton_wait);
 > }
 > 
 > 
 > I've tried this, but the linux_handler is never called.
 > I bet I'm missing something very trivial here, but it
 > doesn't come to mind...
 > 
 > On the other hand, if I request_irq() for the parallelport
 > INT and pass that INT from IPIPE to linux, the linux_handler
 > is called. But it doesn't work with a virq.

If you have a real irq, you do not need to allocate a virtual irq. 

intall an handler in the HRT domain with ipipe_virtualize_irq(), a
handler in the Linux domain with request_irq(), and call
ipipe_propagate_irq() from within the HRT domain interrupt handler.

-- 


                                            Gilles Chanteperdrix.

Reply via email to