Subject: Re: What ipl for IF{,Q}_ENQUEUE?
To: Dennis Ferguson <dennis@juniper.net>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-net
Date: 01/03/2003 13:41:02
On Fri, Jan 03, 2003 at 11:18:27AM -0800, Dennis Ferguson wrote:
> I'm not sure what was fixed by changing this, but I think the mapping is that
> splimp() became splnet() in netbsd, while splnet() became splsoftnet().
> IF*_ENQUEUE needs to block interface hardware interrupts, so splnet() is
> probably what is needed on netbsd.
"Sort of."
splimp() became somewhat overloaded over time, to also mean "block interrupts
which can allocate memory" (since the network interface routines used the mbuf
routines, etc.).
NetBSD clarified the whole interface by doing:
splnet() -- block network hardware interrupts
splsoftnet() -- block network software interrupts
splvm() -- block interrupts that can allocate memory
splimp() is gone from the NetBSD sources.
--
-- Jason R. Thorpe <thorpej@wasabisystems.com>