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.