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
CHAINED                   ->  CHAINED | NOINT


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

Best regards,
Dmitry Adamushko
Xenomai-core mailing list

Reply via email to