Subject: Re: splserial() higher than splhigh()?
To: David Querbach <querbach@realtime.bc.ca>
From: Allen Briggs <briggs@wasabisystems.com>
List: tech-kern
Date: 01/31/2001 00:07:20
On Tue, Jan 30, 2001 at 11:38:46PM -0500, Allen Briggs wrote:
> Actually, the bebox (at least--not sure about the others) masks
> interrupts, but doesn't actually disable the external interrupts
> while in the interrupt handler, so any other interrupts that arrive
> will be deferred to the do_pending_int() processing.

I am totally mistaken here.  The interrupts are disabled by the
processor when the exception is taken, and are not re-enabled (for
some reason, I thought that they were, but I don't see it now).

> For the softint processing, you probably do want to have interrupts
> re-enabled, but this code obviously doesn't do that.  This would be
> pretty straight-forward to do.

...except for the fact that if you have re-enabled interrupts prior
to doing the softint processing, it's quite possible that another
h/w interrupt has come in and been deferred at that point (which you
may will miss due to the reentrancy check).  You could put a loop here,
but I don't think you really want that, either.  So this isn't quite
as straight-forward as I thought at first.

Sorry for any confusion.

-allen

-- 
 Allen Briggs                     briggs@wasabisystems.com
 http://www.wasabisystems.com/    Quality NetBSD CDs, Sales, Support, Service