From owner-cvs-src@FreeBSD.ORG Tue Mar 4 07:34:50 2008 Return-Path: Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C242D1065670; Tue, 4 Mar 2008 07:34:50 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from webaccess-cl.virtdom.com (webaccess-cl.virtdom.com [216.240.101.25]) by mx1.freebsd.org (Postfix) with ESMTP id 916AD8FC37; Tue, 4 Mar 2008 07:34:50 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from [192.168.1.107] (cpe-24-94-75-93.hawaii.res.rr.com [24.94.75.93]) (authenticated bits=0) by webaccess-cl.virtdom.com (8.13.6/8.13.6) with ESMTP id m247Ylrg075650; Tue, 4 Mar 2008 02:34:48 -0500 (EST) (envelope-from jroberson@chesapeake.net) Date: Mon, 3 Mar 2008 21:37:07 -1000 (HST) From: Jeff Roberson X-X-Sender: jroberson@desktop To: David Xu In-Reply-To: <47CCBD78.5040708@freebsd.org> Message-ID: <20080303213630.D920@desktop> References: <200803020741.m227fAoJ039644@repoman.freebsd.org> <47CB6FB0.9040602@freebsd.org> <20080302183513.P920@desktop> <47CCAF49.20903@freebsd.org> <20080303164227.S920@desktop> <47CCBD78.5040708@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: cvs-src@FreeBSD.org, Jeff Roberson , src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern init_sysent.c syscalls.c systrace_args.c src/sys/sys syscall.h syscall.mk sysproto.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Mar 2008 07:34:50 -0000 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.