2012/6/28, David Xu <listlog2...@gmail.com>: > On 2012/6/28 10:21, Attilio Rao wrote: >> 2012/6/28, David Xu<listlog2...@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 _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"