sysctl(3) and sysctl(8) discrepancies

2006-04-19 Thread Mathieu Prevot
Hello,

I have FreeBSD 6.1-RC #27: Wed Apr 19 02:08:00 CEST 2006 amd64 and I have 3
different outputs about hw.ncpu:

`sysctl hw.ncpu` gives me:

'hw.ncpu: 2'


and I have:

hw.ncpu = 6
hw.ncpu = 3


with:

#include stdlib.h
#include sys/types.h
#include sys/sysctl.h

main()
{
  int ncpu[1];
size_t len;

len=sizeof(int);
sysctlnametomib(hw.ncpu,ncpu,len);

printf(hw.ncpu = %d\n,(*ncpu));
printf(hw.ncpu = %d\n,HW_NCPU);

exit(0);
}

Am I doing something wrong ?

Mathieu
___
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) and sysctl(8) discrepancies

2006-04-19 Thread Dan Nelson
In the last episode (Apr 19), Mathieu Prevot said:
 Hello,
 
 I have FreeBSD 6.1-RC #27: Wed Apr 19 02:08:00 CEST 2006 amd64 and I have 3
 different outputs about hw.ncpu:
 
 `sysctl hw.ncpu` gives me:
 
 'hw.ncpu: 2'
 
 
 and I have:
 
 hw.ncpu = 6
 hw.ncpu = 3
 
 
 with:
 
 #include stdlib.h
 #include sys/types.h
 #include sys/sysctl.h
 
 main()
 {
   int ncpu[1];
   size_t len;
 
   len=sizeof(int);
   sysctlnametomib(hw.ncpu,ncpu,len);

You want sysctlbyname() here instead.  sysctlnametomib() returns a
pointer to a mib array that you can pass to the sysctl() function
later.  Saves having to parse the string every time if you are looking
up the same sysctl repeatedly.

sysctlbyname(hw.ncpu, ncpu, len, NULL, 0);

HW_NCPU is the mib number for hw.ncpu if you want to build the mib
array manually.

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