splimp()

Robert Watson rwatson at FreeBSD.org
Sun Feb 24 11:11:05 UTC 2008


On Sun, 24 Feb 2008, Kris Kennaway wrote:

> Barney Cordoba wrote:
>> I'm porting some older software to 7.0 and I see that many of the 7.0 
>> drivers use both locks and splimps() to protect code, particularly the 
>> firewire driver. What cases would an splimp() be required?
>
> spl*() are NOPs that are only left behind in some code as a reminder of what 
> mutual exclusion protections used to apply, mostly in cases where there has 
> not been fine-grained locking applied to the code in question.  In some 
> (most?) cases they serve no useful annotation purpose and should just be 
> removed.  For newly written code they should be added.

I'm pretty sure you meant "should not be added" :-).

There are places in the tree where spl*() references persist due to inadequate 
synchronization, in which case they should be left in order to continue to 
provide an annoying reminder of that requirement.  Ideally, files that 
retrained spl's would increasingly be annotated with comments indicating why 
they remain.

The other argument for retaining spl's was to make maintaining a single 
driver/whatever source across FreeBSD 4.x and forwards; this is presumably 
also decreasingly a requirement over time.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-current mailing list