Re: cvs commit: src/sys/sys ktr.h

[ Available lists | Index of cvs-src | Month of Dec 2004 | Week of 30 Dec 2004 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Nate Lawson <nate@root.org>
Date
30 Dec 2004 00:51:40
Subject
Re: cvs commit: src/sys/sys ktr.h
Message-ID
41D35117.4010505@root.org


[ Hide this part ]
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


Elapsed time: 0.172 seconds