Checking sysctl values from within the kernel.
Doug Ambrisko
ambrisko at ambrisko.com
Thu Aug 11 23:21:02 GMT 2005
John Baldwin writes:
| On Friday 05 August 2005 10:50 am, Dan Nelson wrote:
| > In the last episode (Aug 05), Thordur I. Bjornsson said:
| > > If I want to check a sysctl value from within the kernel (e.g. an
| > > KLD), should I use the system calls described in sysctl(3) ?
| > >
| > > If not, what is the propper way to do so ?
| >
| > Since most sysctls are direct mappings onto integer variables in the
| > kernel, just check the variable directly.
|
| There's also a kernel_sysctl() function available in the kernel for in-kernel
| access to sysctls. You might have to lookup the OID for a given name
| yourself though. Actually, there's a kernel_sysctlbyname() as well.
This could be a fragile interface though. I used this scheme to do
"soft-linking" between modules that could be kldloaded into the kernel
or static. We called it several times every few seconds. Over time
the system would wedge on a setjmp or something like that. We changed
it to a function call since in a static kernel then the problem went away.
Doug A.
More information about the freebsd-hackers
mailing list