Subject: Re: spl naming etc
To: None <arnej@pvv.unit.no>
From: Charles Hannum <Charles-Hannum@deshaw.com>
List: tech-kern
Date: 01/02/1996 20:06:04
   So, what we need to do is ask:
    - does lots of people / drivers / other bsd operating systems assume
   splimp() can/should be used to block malloc, and use it for that purpose?
   [I don't know the answer to this.]

   If not, we *can* split splimp() into slightly modified splimp() blocking
   net/tty, and splmalloc() blocking 'all-drivers-using-malloc()' (whatever
   that may mean).  Of course, on many machines these two might have the
   same implementation, but if there are some machines where it makes for
   a huge win, it should be considered.  I don't know whether it would be
   a huge win, a small win, or no win at all.

>From a purist perspective, this might be nice, but in all cases I know
of, bio interrupts are lower priority than either network or tty
interrupts, so there's no practical reason to do it.

   However, if the current dual-purpose splimp() is kept, it needs to
   be documented as such, since it seems most people [including me, after
   having read a bit in the Stevens/Wright book] assumed it did just b) above.
   I'll volunteer to write the man page.

Indeed; I started on a general spl*(9) man page.

   Now what about another (maybe stupid) idea:  Most boxes doesn't
   necessarily run slip or ppp at all.  What about making splimp() not
   block tty interrupts if slip/ppp is not configured?  This *might*
   be a huge win on many machines for serial port reliability, which
   would be nice for driving printers / terminals.  [Of course, you need
   serial port reliability when using slip/ppp too!]

Two comments on this:

1) You have the risk of phantom bugs that appear or disappear when
someone adds or removes {SLIP,PPP}.  This sort of thing has happened
before.

2) The regions where splimp() is used are fairly small, so it's not at
all clear that this would actually buy you anything.

Again, I don't see a practical reason to do this.


As I pointed out earlier, a better way to fix this whole problem would
be to make device drivers run in threads, and use finer-grain locking
primitives.  (For example, this would mean that ttys not being used
for SLIP or PPP would never lock against malloc().)  The spl model is
really a holdover from the VAX.