On Tue, 4 Mar 2008, David Xu wrote:
Jeff Roberson wrote:
On Tue, 4 Mar 2008, David Xu wrote:
Jeff Roberson wrote:
One question is how I can determine the size of cpuset the kernel is
using ?
I wrote it to tolerate user masks that were much larger than the kernel
mask. I set the default CPU_SETSIZE in userspace to 128 and in kernel
it's MAXCPU. So in practice an application shouldn't have to redefine
CPU_SETSIZE. If your set is too small the kernel will return ERANGE
however. Unfortunately, if your set is larger than the kernel's
CPU_MAXSIZE it'll also return ERANGE. Maybe I should use different
errnos for those cases.
From my point, userland has to write some urgly code to guess what
kernel code wants, it is rather frustrate.
You can use sysctl kern.smp.maxcpus to get the precise size.
if kern.smp.maxcpus is a stable ABI, I may use it, can it be guaranteed?
I saw following code in kern_cpuset.c, obviously, maxcpus is not
respected.
if (uap->cpusetsize < CPU_SETSIZE || uap->cpusetsize > CPU_MAXSIZE)
return (ERANGE);
CPU_SETSIZE in the kernel is defined to MAXCPU. We can consider
kern.smp.maxcpus a stable abi. I can make a note next to it and put it in
the cpuset man page.
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"