Hallo, I'm using the Adeos nanokernel (2.6.8.1-i386-r7c2) within a project to implement a specific realtime environment embedded within Linux. I recognized the following problem sending virtual interrupts between Linux and my realtime domain (having a higher priority):
First I created a virtual interrupt in my realtime domain using adeos_alloc_irq() and adeos_virtualize_irq_from(). This worked fine. My first problem was to signal a virtual interrupt from the Linux domain. adeos_schedule_irq() and adeos_propagate_irq() seem to start from the current (or the next) domain to signal the interrupt to one domain down within the domain chain. Since my receiving domain has a higher priority than the Linux domain, no interrupts were signalled. I solved this problem by using the call __adeos_schedule_irq() with (&__adeos_pipeline)->next as starting point. An idea may be always to use __adoes_pipeline as a start point when applying adeos_schedule_irq(). The second problem appeared when I looked at the specific timing sequence between sending and receiving this interrupt. From my point of view it looks this way that the interrupt is only signaled to the interrupt array in the higher priority domain, but the domain is not started. This will be done later, when a different (hardware) interrupt or a software event forces the higher priority domain to be scheduled. This behavior is not in the way I expected: I prefered an immediate start of the higher priority domain. I don't know whether this behavior is planned (or I do something wrong). Additional information is appreciated. Manfred.
