Message ID | 20210329182520.323665-4-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | [1/4] Remove architecture specific sched_cpucount optimizations | expand |
Ping. On 29/03/2021 15:25, Adhemerval Zanella wrote: > There is no much gain in fallback to cpuinfo if sysfs is no present, > usually on restricted environment neither will be present. It also > simplifies the code and make all architecture use the sched_getaffinity > as the sysfs fallback. > > Checked on sparc64-linux-gnu. > --- > sysdeps/unix/sysv/linux/alpha/getsysstats.c | 38 --------------------- > sysdeps/unix/sysv/linux/getsysstats.c | 22 ++---------- > sysdeps/unix/sysv/linux/sparc/getsysstats.c | 38 --------------------- > 3 files changed, 3 insertions(+), 95 deletions(-) > delete mode 100644 sysdeps/unix/sysv/linux/alpha/getsysstats.c > delete mode 100644 sysdeps/unix/sysv/linux/sparc/getsysstats.c > > diff --git a/sysdeps/unix/sysv/linux/alpha/getsysstats.c b/sysdeps/unix/sysv/linux/alpha/getsysstats.c > deleted file mode 100644 > index 098575faef..0000000000 > --- a/sysdeps/unix/sysv/linux/alpha/getsysstats.c > +++ /dev/null > @@ -1,38 +0,0 @@ > -/* Determine various system internal values, Linux/Alpha version. > - Copyright (C) 1999-2021 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - Contributed by Andreas Schwab <schwab@suse.de> > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library. If not, see > - <https://www.gnu.org/licenses/>. */ > - > - > -/* On the Alpha we can distinguish between the number of configured and > - active cpus. */ > -#define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT) \ > - do \ > - { \ > - /* Find the line that contains the information about the number of \ > - probed cpus. We don't have to fear extremely long lines since \ > - the kernel will not generate them. 8192 bytes are really enough. \ > - If there is no "CPUs ..." line then we are on a UP system. */ \ > - (RESULT) = 1; \ > - while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \ > - if ((sscanf (buffer, "cpus detected : %d", &(RESULT)) == 1) \ > - || (sscanf (buffer, "CPUs probed %d", &(RESULT)) == 1)) \ > - break; \ > - } \ > - while (0) > - > -#include <sysdeps/unix/sysv/linux/getsysstats.c> > diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c > index 5069951246..0791399b8f 100644 > --- a/sysdeps/unix/sysv/linux/getsysstats.c > +++ b/sysdeps/unix/sysv/linux/getsysstats.c > @@ -64,13 +64,13 @@ weak_alias (__get_nprocs, get_nprocs) > int > __get_nprocs_conf (void) > { > - int result = 1; > - > /* Try to use the sysfs filesystem. It has actual information about > online processors. */ > int fd = __open64_nocancel ("/sys/devices/system/cpu/possible", O_RDONLY); > if (fd != -1) > { > + int result = 0; > + > /* The entry is in the form of '[cpuX]-[cpuY]'. */ > char buf[2 * INT_STRLEN_BOUND (unsigned int) + 1]; > > @@ -97,23 +97,7 @@ __get_nprocs_conf (void) > return result + 1; > } > > -#ifdef GET_NPROCS_CONF_PARSER > - /* If we haven't found an appropriate entry return 1. */ > - FILE *fp = fopen ("/proc/cpuinfo", "rce"); > - if (fp != NULL) > - { > - char buffer[8192]; > - > - /* No threads use this stream. */ > - __fsetlocking (fp, FSETLOCKING_BYCALLER); > - GET_NPROCS_CONF_PARSER (fp, buffer, result); > - fclose (fp); > - } > -#else > - result = __get_nprocs (); > -#endif > - > - return result; > + return __get_nprocs (); > } > libc_hidden_def (__get_nprocs_conf) > weak_alias (__get_nprocs_conf, get_nprocs_conf) > diff --git a/sysdeps/unix/sysv/linux/sparc/getsysstats.c b/sysdeps/unix/sysv/linux/sparc/getsysstats.c > deleted file mode 100644 > index a8adba8321..0000000000 > --- a/sysdeps/unix/sysv/linux/sparc/getsysstats.c > +++ /dev/null > @@ -1,38 +0,0 @@ > -/* Determine various system internal values, Linux/Sparc version. > - Copyright (C) 1999-2021 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - Contributed by Andreas Schwab <schwab@suse.de> and > - Jakub Jelinek <jj@ultra.linux.cz> > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > - > -/* On the Sparc we can distinguish between the number of configured and > - active cpus. */ > -#define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT) \ > - do \ > - { \ > - (RESULT) = 0; \ > - /* Find the line that contains the information about the number of \ > - probed cpus. We don't have to fear extremely long lines since \ > - the kernel will not generate them. 8192 bytes are really \ > - enough. */ \ > - while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \ > - if (sscanf (buffer, "ncpus probed : %d", &(RESULT)) == 1) \ > - break; \ > - } \ > - while (0) > - > -#include <sysdeps/unix/sysv/linux/getsysstats.c> >
diff --git a/sysdeps/unix/sysv/linux/alpha/getsysstats.c b/sysdeps/unix/sysv/linux/alpha/getsysstats.c deleted file mode 100644 index 098575faef..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/getsysstats.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Determine various system internal values, Linux/Alpha version. - Copyright (C) 1999-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Schwab <schwab@suse.de> - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <https://www.gnu.org/licenses/>. */ - - -/* On the Alpha we can distinguish between the number of configured and - active cpus. */ -#define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT) \ - do \ - { \ - /* Find the line that contains the information about the number of \ - probed cpus. We don't have to fear extremely long lines since \ - the kernel will not generate them. 8192 bytes are really enough. \ - If there is no "CPUs ..." line then we are on a UP system. */ \ - (RESULT) = 1; \ - while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \ - if ((sscanf (buffer, "cpus detected : %d", &(RESULT)) == 1) \ - || (sscanf (buffer, "CPUs probed %d", &(RESULT)) == 1)) \ - break; \ - } \ - while (0) - -#include <sysdeps/unix/sysv/linux/getsysstats.c> diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c index 5069951246..0791399b8f 100644 --- a/sysdeps/unix/sysv/linux/getsysstats.c +++ b/sysdeps/unix/sysv/linux/getsysstats.c @@ -64,13 +64,13 @@ weak_alias (__get_nprocs, get_nprocs) int __get_nprocs_conf (void) { - int result = 1; - /* Try to use the sysfs filesystem. It has actual information about online processors. */ int fd = __open64_nocancel ("/sys/devices/system/cpu/possible", O_RDONLY); if (fd != -1) { + int result = 0; + /* The entry is in the form of '[cpuX]-[cpuY]'. */ char buf[2 * INT_STRLEN_BOUND (unsigned int) + 1]; @@ -97,23 +97,7 @@ __get_nprocs_conf (void) return result + 1; } -#ifdef GET_NPROCS_CONF_PARSER - /* If we haven't found an appropriate entry return 1. */ - FILE *fp = fopen ("/proc/cpuinfo", "rce"); - if (fp != NULL) - { - char buffer[8192]; - - /* No threads use this stream. */ - __fsetlocking (fp, FSETLOCKING_BYCALLER); - GET_NPROCS_CONF_PARSER (fp, buffer, result); - fclose (fp); - } -#else - result = __get_nprocs (); -#endif - - return result; + return __get_nprocs (); } libc_hidden_def (__get_nprocs_conf) weak_alias (__get_nprocs_conf, get_nprocs_conf) diff --git a/sysdeps/unix/sysv/linux/sparc/getsysstats.c b/sysdeps/unix/sysv/linux/sparc/getsysstats.c deleted file mode 100644 index a8adba8321..0000000000 --- a/sysdeps/unix/sysv/linux/sparc/getsysstats.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Determine various system internal values, Linux/Sparc version. - Copyright (C) 1999-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Schwab <schwab@suse.de> and - Jakub Jelinek <jj@ultra.linux.cz> - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - - -/* On the Sparc we can distinguish between the number of configured and - active cpus. */ -#define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT) \ - do \ - { \ - (RESULT) = 0; \ - /* Find the line that contains the information about the number of \ - probed cpus. We don't have to fear extremely long lines since \ - the kernel will not generate them. 8192 bytes are really \ - enough. */ \ - while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \ - if (sscanf (buffer, "ncpus probed : %d", &(RESULT)) == 1) \ - break; \ - } \ - while (0) - -#include <sysdeps/unix/sysv/linux/getsysstats.c>