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>

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


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


home | help

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