Subject: Re: Proposal for generalized MI soft interrupts
To: Gordon W. Ross <gwr@mc.com>
From: Charles M. Hannum <mycroft@gnu.ai.mit.edu>
List: tech-kern
Date: 01/30/1997 14:53:03
"Gordon W. Ross" <gwr@mc.com> writes:

> 
> Solaris has a similar "softintr" facility:
> 
>      int  ddi_add_softintr();
>      void ddi_remove_softintr(ddi_softintr_t id);
>      void ddi_trigger_softintr(ddi_softintr_t id);
> 
> Their interface specifies that the function called as a result
> of ddi_trigger_softintr() is called at low priority (something
> corresponding to our splsoft).

That doesn't give you prioritization, and probably doesn't give your
fair queueing, so it's not quite the same thing.

> I suggest we include in the following in interface specification:
> 
> Soft interrupt functions attached with the levels listed below are
> called at the interrupt priority shown to the right:
> 
> 	IPL_SOFTCLOCK		splsoftclock()
> 	IPL_SOFTNET		splsoftnet()
> 	IPL_SOFTSERIAL		spltty() *
> 
> * not sure what that last one should be.

I used `splsoftserial()', because I have other tty-type interrupts
that don't need to run at splserial(), but shouldn't be blocked during
serial input processing.  (Also, in general, IPL_FOO == splfoo().)
But you could make it the same as spltty() if you wanted to.

> Another question one might ask is:  Can the attached function
> possibly be called more often than the number of times one
> calls softintr_request(cookie) with its cookie?  It simplifies
> some MD implementations somewhat if that can be allowed.

This would be bad from a performance perpsective.  In addition to the
extra calls themsleves, it might cause a handler to require additional
checks for the case of having no work to do or not having a data
structure allocated.