Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jun 2012 03:32:40 +0100
From:      Attilio Rao <attilio@freebsd.org>
To:        davidxu@freebsd.org
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Konstantin Belousov <kib@freebsd.org>
Subject:   Re: svn commit: r237660 - head/lib/libc/gen
Message-ID:  <CAJ-FndD9Hc_KvHe8vC3usVDZh7MYb51gtXsHgmins8dBC3mu_w@mail.gmail.com>
In-Reply-To: <4FEBC0A2.3010708@gmail.com>
References:  <201206272032.q5RKWjvt031174@svn.freebsd.org> <4FEBB8C9.8070006@gmail.com> <CAJ-FndBdpP4hFPyqHaU6GucXeGi3WT4d%2Bpu-9hCNEpAPZAZQgg@mail.gmail.com> <4FEBC0A2.3010708@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2012/6/28, David Xu <listlog2011@gmail.com>:
> On 2012/6/28 10:21, Attilio Rao wrote:
>> 2012/6/28, David Xu<listlog2011@gmail.com>:
>>> On 2012/6/28 4:32, Konstantin Belousov wrote:
>>>> Author: kib
>>>> Date: Wed Jun 27 20:32:45 2012
>>>> New Revision: 237660
>>>> URL: http://svn.freebsd.org/changeset/base/237660
>>>>
>>>> Log:
>>>>     Optimize the handling of SC_NPROCESSORS_CONF, by using auxv AT_NCPU
>>>>     value if present.
>>>>
>>>>     MFC after:	1 week
>>>>
>>>> Modified:
>>>>     head/lib/libc/gen/sysconf.c
>>>>
>>>> Modified: head/lib/libc/gen/sysconf.c
>>>> ==============================================================================
>>>> --- head/lib/libc/gen/sysconf.c	Wed Jun 27 20:24:25 2012	(r237659)
>>>> +++ head/lib/libc/gen/sysconf.c	Wed Jun 27 20:32:45 2012	(r237660)
>>>> @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$");
>>>>    #include<sys/resource.h>
>>>>    #include<sys/socket.h>
>>>>
>>>> +#include<elf.h>
>>>>    #include<errno.h>
>>>>    #include<limits.h>
>>>>    #include<paths.h>
>>>> @@ -51,6 +52,7 @@ __FBSDID("$FreeBSD$");
>>>>
>>>>    #include "../stdlib/atexit.h"
>>>>    #include "tzfile.h"		/* from ../../../contrib/tzcode/stdtime */
>>>> +#include "libc_private.h"
>>>>
>>>>    #define	_PATH_ZONEINFO	TZDIR	/* from tzfile.h */
>>>>
>>>> @@ -585,6 +587,8 @@ yesno:
>>>>
>>>>    	case _SC_NPROCESSORS_CONF:
>>>>    	case _SC_NPROCESSORS_ONLN:
>>>> +		if (_elf_aux_info(AT_NCPUS,&value, sizeof(value)) == 0)
>>>> +			return ((long)value);
>>>>    		mib[0] = CTL_HW;
>>>>    		mib[1] = HW_NCPU;
>>>>    		break;
>>>>
>>> Will this make controlling the number of CPU online or CPU hotplug
>>> be impossible on FreeBSD ?
>> If I think about hotplug CPUs I can think of other 1000
>> problems/races/bad situations to be fixed before this one, really.
> These are problems only in kernel, but kib's change is about ABI
> between userland and kernel, I hope we don't introduce an ABI which
> is not extendable road stone.

I'm not entirely sure I see the ABI breakage here. If the AT_NCPUS
becames unconvenient and not correct at some point we can just fix
sysconf() to not look into the aux vector anymoe. Please note that
AT_NCPUS is already exported nowadays. I think this is instead a
clever optimization to avoid the sysctl() (usual way to retrieve the
number of CPUs).

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein



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