cvs commit: src/sys/kern sched_4bsd.c
Robert Watson
rwatson at FreeBSD.org
Tue May 2 11:10:36 UTC 2006
On Mon, 1 May 2006, Scott Long wrote:
>> I think that sysctls should rarely be changed, it really hurts application
>> developers that will try to build low level system management software.
>>
>> Even device drivers should be careful, it would suck for a vendor's binary
>> code to break for a utility that you are dependant on just because someone
>> didn't like the spelling of a sysctl.
>
> Right, that's why I was saying that certain parts of the tree should be
> considered part of the API, just like syscalls, and treated with care, and
> other parts of the tree should be allowed to be more flexible, and
> advertised that way. I'd hate to add a sysctl to one of my drivers that is
> only intended as a debugging knob, and have some application developer think
> that it was something that was useful for his application to use. I find
> that a lot of sysctls are added as a cheap means to make debugging
> information available at runtime; this doesn't mean that they should be
> treated as a first class API that can never again be changed or removed.
> And if the popular opinion is against this, then I challenge them to develop
> an alternate developer-friendly interface that can be used instead. Should
> FreeBSD change its stance against pseudofilesystems and use them for this
> information like Linux does?
I don't see changing the mechanism fixing the name space policy issue.
Renaming vm.foo.bar isn't really very different from remaining
/proc/vm/foo/bar, because the application is broken both ways. :-)
In my sysctl(9) man page, I've tried to identify to sysctl authors that they
need to be sensitive to name space issues, but nothing trumps common sense
(don't change things without a good reason, and if you do change things,
expect to deal with the results).
With regard to debugging information -- in the past, we've stuffed some
debugging information into debug.*. Maybe we need to actually mirror the
normal structure into debug.* for debugging things. I.e., net.inet.foo.bar,
and debug.net.inet.temporary_thingy.
Robert N M Watson
More information about the cvs-src
mailing list