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