Re: sysctl(3) interface

2007-02-02 Thread Dag-Erling Smørgrav
Daniel Rudy [EMAIL PROTECTED] writes:
 Dag-Erling Smørgrav [EMAIL PROTECTED] writes:
  man 3 devinfo
 A little too late since I already hacked the source for sysctl(8) and
 figured out how it works.

The dev sysctl tree contains only a subset of the information
available through devinfo(3).

DES
-- 
Dag-Erling Smørgrav - [EMAIL PROTECTED]
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: sysctl(3) interface

2007-02-01 Thread Daniel Rudy
At about the time of 1/31/2007 2:10 AM, Dag-Erling Smørgrav stated the
following:
 Daniel Rudy [EMAIL PROTECTED] 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
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: sysctl(3) interface

2007-01-31 Thread Dag-Erling Smørgrav
Daniel Rudy [EMAIL PROTECTED] 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
-- 
Dag-Erling Smørgrav - [EMAIL PROTECTED]
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to [EMAIL PROTECTED]


sysctl(3) interface

2007-01-27 Thread Daniel Rudy

Hello List,

I've been taking apart and analyzing the sysctl(8) program to gain a
better insight into how to use the sysctl(3) interface.  Adding some
debugging code to the program in strategic locations, this is what I
have as an output:

debug: name: dev
debug: all: oid:  0 2 440
debug: name: dev.nexus.%parent
debug: oid:  440 912 913
debug: all: oid:  0 2 440 912 913
debug: name: dev.nexus.0.%desc
debug: oid:  440 912 914 915
debug: all: oid:  0 2 440 912 914 915
debug: name: dev.nexus.0.%driver
debug: oid:  440 912 914 916
debug: value: nexusdev.nexus.0.%driver: nexus
debug: all: oid:  0 2 440 912 914 916
debug: name: dev.nexus.0.%location
debug: oid:  440 912 914 917
debug: all: oid:  0 2 440 912 914 917
debug: name: dev.nexus.0.%pnpinfo
debug: oid:  440 912 914 918
debug: all: oid:  0 2 440 912 914 918
debug: name: dev.nexus.0.%parent
debug: oid:  440 912 914 919
debug: value: root0dev.nexus.0.%parent: root0
debug: all: oid:  0 2 440 912 914 919
debug: name: dev.acpi.%parent
debug: oid:  440 920 921
debug: all: oid:  0 2 440 920 921
debug: name: dev.acpi.0.%desc
debug: oid:  440 920 922 923
debug: value: AMIINT dev.acpi.0.%desc: AMIINT
debug: all: oid:  0 2 440 920 922 923
debug: name: dev.acpi.0.%driver
debug: oid:  440 920 922 924
debug: value: acpidev.acpi.0.%driver: acpi
debug: all: oid:  0 2 440 920 922 924
debug: name: dev.acpi.0.%location
debug: oid:  440 920 922 925
debug: all: oid:  0 2 440 920 922 925
debug: name: dev.acpi.0.%pnpinfo
debug: oid:  440 920 922 926

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.  I went looking and found that 0 is CTL_UNSPEC which according
to the comment is unused, but I see it here in the program output.


I also noticed this little blurb in the source code too:

/*
 * These functions uses a presently undocumented interface to the kernel
 * to walk the tree and get the type so it can print the value.
 * This interface is under work and consideration, and should probably
 * be killed with a big axe by the first person who can find the time.
 * (be aware though, that the proper interface isn't as obvious as it
 * may seem, there are various conflicting requirements.
 */

But I figure it's for the actual display of the various variables and
not for returning information about the dev tree.


So, my question is, how do I walk the tree to get the PnP info for all
the devices in the system?

-- 
Daniel Rudy
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to [EMAIL PROTECTED]