sysctl(3) interface

Daniel Rudy dr2867 at pacbell.net
Fri Feb 2 05:41:58 UTC 2007


At about the time of 1/31/2007 2:10 AM, Dag-Erling Smørgrav stated the
following:
> Daniel Rudy <dr2867 at pacbell.net> writes:
>> I've been taking apart and analyzing the sysctl(8) program to gain a
>> better insight into how to use the sysctl(3) interface.  [...]
>> It's using an oid of 0 and 2 to get something, then it comes up with 440
>> and then a sequence of numbers that are incrementing in a peculiar
>> pattern.
> 
> sysctl(8) uses undocumented interfaces to a) enumerate the nodes in
> the sysctl tree and b) obtain the name of a node, given its OID.
> 
>> So, my question is, how do I walk the tree to get the PnP info for all
>> the devices in the system?
> 
> man 3 devinfo
> 
> DES

A little too late since I already hacked the source for sysctl(8) and
figured out how it works.

Here's what I have:

mib[0] = 0;  Unused according to sys/sysctl.h.

So,

0,1 - get name from oid.
0,2 - get first sysctl node/leaf?  (I haven't used this one yet)
0,3 - get oid from name.
0,4 - get format for oid? (I haven't used this one yet either)


At least that's that I have.  I wrote a program based on that and it
does work, quite well in fact.  I am not concerned about portability
since the software that I'm writing will run ONLY on FreeBSD and maybe
some of the variants.

-- 
Daniel Rudy


More information about the freebsd-hackers mailing list