diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-03 06:28:41 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-03 06:28:41 +0000 |
commit | d20db0561a6a36f914fde030512503b114ef9a0c (patch) | |
tree | d4e5e3494d95c269a1cee6195f11bf3201bcadbf /rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch | |
parent | 016343d99b1b269d7246ef1e143d4b54914433d4 (diff) |
automatic import of glibcopeneuler22.03_LTS_SP4openeuler22.03_LTS_SP3openeuler20.03
Diffstat (limited to 'rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch')
-rw-r--r-- | rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch b/rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch new file mode 100644 index 0000000..3e7548c --- /dev/null +++ b/rseq-Linux-Use-rseq-to-accelerate-sched_getcpu.patch @@ -0,0 +1,48 @@ +From 00bae0eb5212a1ec4e8b4b90294937903628e7ce Mon Sep 17 00:00:00 2001 +From: Florian Weimer <fweimer@redhat.com> +Date: Thu, 9 Dec 2021 09:49:32 +0100 +Subject: [PATCH 5/9] Linux: Use rseq to accelerate sched_getcpu + +Co-Authored-By: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com> +--- + sysdeps/unix/sysv/linux/sched_getcpu.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/sysdeps/unix/sysv/linux/sched_getcpu.c b/sysdeps/unix/sysv/linux/sched_getcpu.c +index c41e986f..6f78edae 100644 +--- a/sysdeps/unix/sysv/linux/sched_getcpu.c ++++ b/sysdeps/unix/sysv/linux/sched_getcpu.c +@@ -20,8 +20,8 @@ + #include <sysdep.h> + #include <sysdep-vdso.h> + +-int +-sched_getcpu (void) ++static int ++vsyscall_sched_getcpu (void) + { + unsigned int cpu; + int r = -1; +@@ -32,3 +32,18 @@ sched_getcpu (void) + #endif + return r == -1 ? r : cpu; + } ++ ++#ifdef RSEQ_SIG ++int ++sched_getcpu (void) ++{ ++ int cpu_id = THREAD_GETMEM_VOLATILE (THREAD_SELF, rseq_area.cpu_id); ++ return __glibc_likely (cpu_id >= 0) ? cpu_id : vsyscall_sched_getcpu (); ++} ++#else /* RSEQ_SIG */ ++int ++sched_getcpu (void) ++{ ++ return vsyscall_sched_getcpu (); ++} ++#endif /* RSEQ_SIG */ +-- +2.23.0 + |