Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Oct 2010 12:18:38 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Garrett Cooper <gcooper@freebsd.org>
Subject:   Re: svn commit: r214409 - head/sys/kern
Message-ID:  <alpine.BSF.2.00.1010271216160.32645@fledge.watson.org>
In-Reply-To: <4CC80ABA.3080404@freebsd.org>
References:  <201010270232.o9R2Wsu3084553@svn.freebsd.org> <AANLkTi=2dTVmB8Goj%2BNXq4F6SmZBNS3bxn8gLjmQ%2BdfV@mail.gmail.com> <4CC803A8.3040602@freebsd.org> <AANLkTimddEnxCLNWd%2BtWVANXCzu8ZkNHQumXCU8a_8yT@mail.gmail.com> <4CC80ABA.3080404@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 27 Oct 2010, David Xu wrote:

>>> I really hate to see such a problem that userland can not figure out what 
>>> kernel is using, I try hardly to guess, but still can not find what it is 
>>> using. yes, I think the doc may need to be fixed or another syscall is 
>>> needed.
>>
>>     Well... Jeff's code in cpuset(1) does some trivial sizeof(mask) 's, but 
>> it just passes in cpuset_t for mask. I've seen different calling 
>> conventions at the kernel level when I tried to get my brain in sync with 
>> that for a bug I was looking at a few weeks ago (and sadly, failed to some 
>> degree).
>>     These syscalls are a bit confusing though, and apart from cpuset(1) 
>> there aren't any really good examples in the sourcebase on how to use them 
>> (at least not the last time I checked)... Thanks, -Garrett
>> 
> The problem is that the size of cpuset is not fixed, it is tunable by the 
> recompiling kernel with different parameter, so if you have a program which 
> you want to adapt it to use any size of cpuset, it should be able to get the 
> size the kernel is using, if you don't have source code of the program, you 
> can not compile it with new parameter, then there is trouble.

Yay, it's fd_set all over again :-).

It sounds like we might just need to add a sysctl and a few wrapper functions 
in userspace along the lines of (hand-wave):

cpuset_t	*cpuset_alloc();
void		 cpuset_free();

And perhaps some sort of API that abstracts manipulation of the set (or
doesn't but allows the user to easily query its bounds).

Robert



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1010271216160.32645>