On Wed, Oct 27, 2010 at 3:49 AM, David Xu <davi...@freebsd.org> wrote:
> Garrett Cooper wrote:
>>
>> On Tue, Oct 26, 2010 at 7:32 PM, David Xu <davi...@freebsd.org> wrote:
>>>
>>> Author: davidxu
>>> Date: Wed Oct 27 02:32:54 2010
>>> New Revision: 214409
>>> URL: http://svn.freebsd.org/changeset/base/214409
>>>
>>> Log:
>>>  If input parameter cpusetsize is zero, give userland size of cpuset mask
>>>  kernel is using.
>>>
>>> Modified:
>>>  head/sys/kern/kern_cpuset.c
>>>
>>> Modified: head/sys/kern/kern_cpuset.c
>>>
>>> ==============================================================================
>>> --- head/sys/kern/kern_cpuset.c Wed Oct 27 02:07:25 2010        (r214408)
>>> +++ head/sys/kern/kern_cpuset.c Wed Oct 27 02:32:54 2010        (r214409)
>>> @@ -889,6 +889,10 @@ cpuset_getaffinity(struct thread *td, st
>>>       int error;
>>>       size_t size;
>>>
>>> +       if (uap->cpusetsize == 0) {
>>> +               td->td_retval[0] = sizeof(cpuset_t);
>>> +               return (0);
>>> +       }
>>>       if (uap->cpusetsize < sizeof(cpuset_t) ||
>>>           uap->cpusetsize > CPU_MAXSIZE / NBBY)
>>>               return (ERANGE);
>>
>>    Isn't this requirement partly broken now?
>>
>>     [ERANGE]           The cpusetsize was either preposterously large or
>>                        smaller than the kernel set size.
>>
>>    Why should cpuset(2) be broken in favor of people not passing valid
>> values?
>
> 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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to