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"