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>