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.