summaryrefslogtreecommitdiff
path: root/misc-Add-__get_nprocs_sched.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-03 06:28:41 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-03 06:28:41 +0000
commitd20db0561a6a36f914fde030512503b114ef9a0c (patch)
treed4e5e3494d95c269a1cee6195f11bf3201bcadbf /misc-Add-__get_nprocs_sched.patch
parent016343d99b1b269d7246ef1e143d4b54914433d4 (diff)
Diffstat (limited to 'misc-Add-__get_nprocs_sched.patch')
-rw-r--r--misc-Add-__get_nprocs_sched.patch110
1 files changed, 110 insertions, 0 deletions
diff --git a/misc-Add-__get_nprocs_sched.patch b/misc-Add-__get_nprocs_sched.patch
new file mode 100644
index 0000000..68e1208
--- /dev/null
+++ b/misc-Add-__get_nprocs_sched.patch
@@ -0,0 +1,110 @@
+From e870aac8974cda746157a5a3c9f452ccd70da29b Mon Sep 17 00:00:00 2001
+From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date: Mon, 6 Sep 2021 12:22:54 -0300
+Subject: [PATCH] misc: Add __get_nprocs_sched
+
+This is an internal function meant to return the number of avaliable
+processor where the process can scheduled, different than the
+__get_nprocs which returns a the system available online CPU.
+
+The Linux implementation currently only calls __get_nprocs(), which
+in tuns calls sched_getaffinity.
+
+Reviewed-by: Florian Weimer <fweimer@redhat.com>
+(cherry picked from commit 11a02b035b464ab6813676adfd19c4a59c36d907)
+---
+ include/sys/sysinfo.h | 7 ++++++-
+ malloc/arena.c | 2 +-
+ misc/getsysstats.c | 6 ++++++
+ sysdeps/mach/getsysstats.c | 6 ++++++
+ sysdeps/unix/sysv/linux/getsysstats.c | 6 ++++++
+ 5 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h
+index 7388356..c490561 100644
+--- a/include/sys/sysinfo.h
++++ b/include/sys/sysinfo.h
+@@ -9,10 +9,15 @@
+ extern int __get_nprocs_conf (void);
+ libc_hidden_proto (__get_nprocs_conf)
+
+-/* Return number of available processors. */
++/* Return number of available processors (not all of them will be
++ available to the caller process). */
+ extern int __get_nprocs (void);
+ libc_hidden_proto (__get_nprocs)
+
++/* Return the number of available processors which the process can
++ be scheduled. */
++extern int __get_nprocs_sched (void) attribute_hidden;
++
+ /* Return number of physical pages of memory in the system. */
+ extern long int __get_phys_pages (void);
+ libc_hidden_proto (__get_phys_pages)
+diff --git a/malloc/arena.c b/malloc/arena.c
+index 6674846..f1f0af8 100644
+--- a/malloc/arena.c
++++ b/malloc/arena.c
+@@ -879,7 +879,7 @@ arena_get2 (size_t size, mstate avoid_arena)
+ narenas_limit = mp_.arena_max;
+ else if (narenas > mp_.arena_test)
+ {
+- int n = __get_nprocs ();
++ int n = __get_nprocs_sched ();
+
+ if (n >= 1)
+ narenas_limit = NARENAS_FROM_NCORES (n);
+diff --git a/misc/getsysstats.c b/misc/getsysstats.c
+index 0eedfac..57d9360 100644
+--- a/misc/getsysstats.c
++++ b/misc/getsysstats.c
+@@ -45,6 +45,12 @@ weak_alias (__get_nprocs, get_nprocs)
+ link_warning (get_nprocs, "warning: get_nprocs will always return 1")
+
+
++int
++__get_nprocs_sched (void)
++{
++ return 1;
++}
++
+ long int
+ __get_phys_pages (void)
+ {
+diff --git a/sysdeps/mach/getsysstats.c b/sysdeps/mach/getsysstats.c
+index 1267f39..cc8023f 100644
+--- a/sysdeps/mach/getsysstats.c
++++ b/sysdeps/mach/getsysstats.c
+@@ -62,6 +62,12 @@ __get_nprocs (void)
+ libc_hidden_def (__get_nprocs)
+ weak_alias (__get_nprocs, get_nprocs)
+
++int
++__get_nprocs_sched (void)
++{
++ return __get_nprocs ();
++}
++
+ /* Return the number of physical pages on the system. */
+ long int
+ __get_phys_pages (void)
+diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
+index 1391e36..120ce1b 100644
+--- a/sysdeps/unix/sysv/linux/getsysstats.c
++++ b/sysdeps/unix/sysv/linux/getsysstats.c
+@@ -88,6 +88,12 @@ __get_nprocs (void)
+ libc_hidden_def (__get_nprocs)
+ weak_alias (__get_nprocs, get_nprocs)
+
++int
++__get_nprocs_sched (void)
++{
++ return __get_nprocs ();
++}
++
+
+ /* On some architectures it is possible to distinguish between configured
+ and active cpus. */
+--
+1.8.3.1
+