Question about sysctl-ing coretemp module values

Matthew Fleming mdf356 at gmail.com
Sat Jan 15 21:12:21 UTC 2011


On Sat, Jan 15, 2011 at 12:09 PM, Harald Servat <redcrash at gmail.com> wrote:
> Hello,
>
>  First of all, forgive if this is not the appropiate list to ask this.
> Could you point me the correct list if so?
>
>  I'm writing a small program to capture the temperature reported by the
> coretemp kernel module. I'm doing this by using the sysctl API. However, I'm
> facing a problem when reading that value (dev.cpu.0.temperature, for
> example).
>
>  man 3 sysctl has an example (labeled as "To retrieve the standard search
> path for the system utilities:") which seems great to me to know the length
> of the OID it wants to read before running the "real" sysctl. I wrote a
> similar example (attached) based on that, but it does not work appropiately.
> The 1st call tells me that len = 4 (whereas the value for
> dev.cpu.0.temperature is "37.0C" which should be 5 if \0 is not counted).
>
>  Can anyone shed some light on what I'm doing wrong?

The list ate your attachment but I think I know what you're misinterpreting.

The coretemp sysctl is, if I'm reading the code correctly, returning
the temperature as an int (hence len=4) in 10ths of a degree K.  Then
sysctl(8) is printing this as %.1fC, which is where the 37.0C comes
from.  So the sysctl returns an int with some value and then printf
does the conversion.

The coretemp sysctl uses the unconventional "IK" format, meaning that
it's a signed int that should be interpreted as Kelvin.

Cheers,
matthew


More information about the freebsd-hackers mailing list