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]"

Reply via email to