Alexis Berlemont wrote:
Hi,
Sorry for the silly things I said earlier, forgot the most important step :
the soft irq...
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 think you should not use request_irq() but ipipe_virtualize_irq() :
inter_domain_irq = ipipe_alloc_virq();
-ret=request_irq(inter_domain_irq,linux_handler,SA_INTERRUPT,"virtualIRQ",NULL);
+ ret = ipipe_virtualize_irq(ipipe_root_domain,
inter_domain_irq,
&ipipe_handler,
NULL, NULL,
IPIPE_HANDLE_MASK);
-enable_irq(inter_domain_irq);
Your function linux_handler will be called in the root domain (Linux) any time
you use the function ipipe_trigger_irq(...inter_domain_irq...) in a non Linux
domain.
Yes, I thought of this too.
I just tried this and it works nicely.
I'm just curious if the wake_up_interruptible in the new ipipe-interrupt handler
(linux_handler in the above snippet) will affect HRT in any other
ipipe-int-handler
in the same domain ?
Thank you very much and best regards,
Hannes.