On 09/02/06, Jan Kiszka <[EMAIL PROTECTED]> wrote:
Philippe Gerum wrote:
> Anders Blomdell wrote:
>
>> My distinct feeling is that the return value should be a scalar and
>> not a set!
>>
>
> To sum up, the valid return values are HANDLED, HANDLED | ENABLE (*),
> HANDLED | CHAINED and CHAINED. It's currently a set because I once
> thought that the "handled" indication (or lack of) could be a valuable
> information to gather at nucleus level to detect unhandled RT
> interrupts. Fact is that we currently don't use this information,

But it is required for the edge-triggered case to detect when the IRQ
line was at least shortly released. I guess Dmitry introduced that NOINT
just because HANDLED equals 0 so far. As I would say HANDLED == !NOINT,
we could avoid this new flag by just making HANDLED non-zero.

That's it.

I was about to make a comment on Philipe's list of possible return values, but you outrun me.

HANDLED is 0 so we can not distinguish between HANDLED | CHAINED and CHAINED cases. NOINT denotes explicitly the handler's answer "this IRQ is rised not by my hw!" and it's needed (at least) for implementing the edge-triggered irq sharing.

It's not necessary in case HANDLED becomes non-zero and, actually, HANDLED is not necessary with NOINT.

As I may see, Philipe's list can be mapped as follows :

HANDLED  ->  0
HANDLED | ENABLE  ->  ENABLE
HANDLED | CHAINED ->  CHAINED
CHAINED                   ->  CHAINED | NOINT

and

NOINT as a separete use case (?). Could be useful at least for the edge-triggered stuff.


--
Best regards,
Dmitry Adamushko
_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to