cvs commit: src/sys/sys ktr.h

Nate Lawson nate at root.org
Wed Dec 29 16:51:40 PST 2004


Jeff Roberson wrote:
> On Wed, 29 Dec 2004, Nate Lawson wrote:
>>>>Isn't there a way to dynamically allocate ids, like sysctl does for oid?
>>>
>>>They need to be static at compile time or they always produce massive
>>>bloat in the kernel.
>>
>>Right, I thought we did something like that for other subsystems.  I'm
>>very fuzzy on the current best approach but in the past we used linker
>>sets to gather a class of data at link time (including mod load).  If
>>the linker set was an id placeholder for a particular type of debug
>>data, the kernel could overwrite this with the actual runtime id.
> 
> 
> We already have a runtime mechanism for disabling a particular class that
> could tolerate dynamic class ids.  That's KTR_MASK.  The issue I'm talking
> about, is the ability to compile it out.  Since gcc's dead code eliminator
> doesn't run after link time, all ktrs would forever be compiled into the
> kernel.

Ok.  It might be possible to mark such code with __init and KTR ids with 
__initdata.  Then the linker can discard them if not using KTR.  This is 
the approach Linux takes to reclaim memory from code/data that only 
needs to be accessed once, at boot.

-- 
Nate


More information about the cvs-all mailing list