Re: How to catch interrupt

From: Bruce Evans <bde_at_zeta.org.au>
Date: Thu, 17 Jun 2004 17:01:07 +1000 (EST)
On Thu, 17 Jun 2004, Roman Kurakin wrote:

> Bruce Evans:
> >However, you may only need to test for pending interrupts.  This can
> >be done for isa interrupts using isa_irq_pending() to get a bitmap of
> >
> It seems that this function is not working for interrupts that were
> already used
> by some driver before I call it.

It only works for unacknowledged interrupts, so it can only work for
masked interrupts.  See sio.c:

% 	/*
% 	 * We don't want to get actual interrupts, just masked ones.
% 	 * Interrupts from this line should already be masked in the ICU,
% 	 * but mask them in the processor as well in case there are some
% 	 * (misconfigured) shared interrupts.
% 	 */
% 	mtx_lock_spin(&sio_lock);

Note that masking interrupts in the processor only helps for the non-SMP
case, and the comment has rotted:
- the code acquires a spinlock.  It only masks interrupts as a BAD side
  effect.  In my version, acquiring a spinlock doesn't mask processor
  interrupts, and there is an explicit intr_disable().
- interrupts can now be shared in some non-misconfigured cases.

Bruce
Received on Thu Jun 17 2004 - 05:01:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:57 UTC