Pádraig Brady wrote: > > + while (*envvalue != '\0' && c_isspace (*envvalue)) > > + envvalue++; > > A pedantic comment. Could one instead assume strtoul() skips leading > whitespace?
But then strtoul would also skip a sign, and a value of, say, "+4" is not allowed by the OpenMP spec. > > + #if HAVE_PTHREAD_AFFINITY_NP && defined __GLIBC__ && 0 > > > + #elif HAVE_PTHREAD_AFFINITY_NP && defined __NetBSD__ && 0 > > If you put the "0" first then vim at least will highlight > the section as a comment. Same for kate. But the '&& 0' is the last modification that one does to the code, to enable or disable it, that's why it is at the end. The same style is also used in lib/fts.c and lib/wait-process.c. > > *** m4/nproc.m4.orig 2009-11-01 14:55:37.000000000 +0100 > > --- m4/nproc.m4 2009-11-01 14:31:13.000000000 +0100 > > ! AC_CHECK_FUNCS([sched_getaffinity sched_getaffinity_np \ > > ! pstat_getdynamic sysmp sysctl]) > > ]) > > Will this result in a compile failure on glibc-2.3.[23] > where sched_getaffinity() has a different prototype? > If so it might be nice to not define HAVE_SCHED_GETAFFINITY > in that case Good point. I'll use HAVE_SCHED_GETAFFINITY_LIKE_GLIBC instead of HAVE_SCHED_GETAFFINITY, defined as follows: --- m4/nproc.m4.orig 2009-11-02 02:09:26.000000000 +0100 +++ m4/nproc.m4 2009-11-02 02:07:29.000000000 +0100 @@ -1,4 +1,4 @@ -# nproc.m4 serial 3 +# nproc.m4 serial 4 dnl Copyright (C) 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -12,6 +12,9 @@ # Prerequisites of lib/nproc.c. AC_DEFUN([gl_PREREQ_NPROC], [ + dnl Persuade glibc <sched.h> to declare CPU_SETSIZE, CPU_ISSET etc. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_HEADERS([sys/pstat.h sys/sysmp.h sys/param.h],,, [AC_INCLUDES_DEFAULT]) dnl <sys/sysctl.h> requires <sys/param.h> on OpenBSD 4.0. @@ -21,5 +24,30 @@ # include <sys/param.h> #endif ]) - AC_CHECK_FUNCS([pstat_getdynamic sysmp sysctl]) + + AC_CHECK_FUNCS([sched_getaffinity sched_getaffinity_np \ + pstat_getdynamic sysmp sysctl]) + + dnl Test whether sched_getaffinity has the expected declaration. + dnl glibc 2.3.[0-2]: + dnl int sched_getaffinity (pid_t, unsigned int, unsigned long int *); + dnl glibc 2.3.3: + dnl int sched_getaffinity (pid_t, cpu_set_t *); + dnl glibc >= 2.3.4: + dnl int sched_getaffinity (pid_t, size_t, cpu_set_t *); + if test $ac_cv_func_sched_getaffinity = yes; then + AC_CACHE_CHECK([for glibc compatible sched_getaffinity], + [gl_cv_func_sched_getaffinity3], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sched.h>]], + [[sched_getaffinity (0, 0, (cpu_set_t *) 0);]])], + [gl_cv_func_sched_getaffinity3=yes], + [gl_cv_func_sched_getaffinity3=no]) + ]) + if test $gl_cv_func_sched_getaffinity3 = yes; then + AC_DEFINE([HAVE_SCHED_GETAFFINITY_LIKE_GLIBC], [1], + [Define to 1 if sched_getaffinity has a glibc compatible declaration.]) + fi + fi ])