[PATCH 0/5] Extensible rseq support for glibc
Florian Weimer
fweimer@redhat.com
Mon Dec 6 13:45:49 GMT 2021
This series again adds rseq support, this time in such a way that the
kernel can eventually request a larger rseq area size. Registration can
be disabled using a new tunable.
The series is based mostly on Mathieu's earlier work, especially the
definition of RSEQ_SIG and the tests.
Thanks,
Florian
Florian Weimer (5):
nptl: Add <thread_pointer.h> for defining __thread_pointer
nptl: Add rseq registration
Linux: Use rseq to accelerate sched_getcpu
nptl: Add glibc.pthread.rseq tunable to control rseq registration
nptl: Add public rseq symbols
NEWS | 11 +
csu/libc-tls.c | 6 +
manual/threads.texi | 81 ++++++
manual/tunables.texi | 10 +
nptl/descr.h | 4 +
nptl/pthread_create.c | 21 ++
sysdeps/csky/nptl/thread_pointer.h | 25 ++
sysdeps/hppa/nptl/thread_pointer.h | 25 ++
sysdeps/ia64/nptl/thread_pointer.h | 19 ++
sysdeps/m68k/nptl/thread_pointer.h | 20 ++
sysdeps/microblaze/nptl/thread_pointer.h | 19 ++
sysdeps/nptl/dl-tls_init_tp.c | 33 ++-
sysdeps/nptl/dl-tunables.list | 6 +
sysdeps/nptl/internaltypes.h | 1 +
sysdeps/nptl/thread_pointer.h | 19 ++
sysdeps/powerpc/nptl/thread_pointer.h | 23 ++
sysdeps/sparc/nptl/thread_pointer.h | 19 ++
sysdeps/unix/sysv/linux/Makefile | 17 +-
sysdeps/unix/sysv/linux/Versions | 5 +
sysdeps/unix/sysv/linux/aarch64/bits/rseq.h | 43 +++
sysdeps/unix/sysv/linux/aarch64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/alpha/ld.abilist | 3 +
sysdeps/unix/sysv/linux/arc/ld.abilist | 3 +
sysdeps/unix/sysv/linux/arm/be/ld.abilist | 3 +
sysdeps/unix/sysv/linux/arm/bits/rseq.h | 83 ++++++
sysdeps/unix/sysv/linux/arm/le/ld.abilist | 3 +
sysdeps/unix/sysv/linux/bits/rseq.h | 29 ++
sysdeps/unix/sysv/linux/csky/ld.abilist | 3 +
sysdeps/unix/sysv/linux/hppa/ld.abilist | 3 +
sysdeps/unix/sysv/linux/i386/ld.abilist | 3 +
sysdeps/unix/sysv/linux/ia64/ld.abilist | 3 +
.../unix/sysv/linux/m68k/coldfire/ld.abilist | 3 +
.../unix/sysv/linux/m68k/m680x0/ld.abilist | 3 +
sysdeps/unix/sysv/linux/microblaze/ld.abilist | 3 +
sysdeps/unix/sysv/linux/mips/bits/rseq.h | 62 +++++
.../unix/sysv/linux/mips/mips32/ld.abilist | 3 +
.../sysv/linux/mips/mips64/n32/ld.abilist | 3 +
.../sysv/linux/mips/mips64/n64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/nios2/ld.abilist | 3 +
sysdeps/unix/sysv/linux/powerpc/bits/rseq.h | 37 +++
.../sysv/linux/powerpc/powerpc32/ld.abilist | 3 +
.../linux/powerpc/powerpc64/be/ld.abilist | 3 +
.../linux/powerpc/powerpc64/le/ld.abilist | 3 +
sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist | 3 +
sysdeps/unix/sysv/linux/riscv/rv64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/rseq-internal.h | 52 ++++
sysdeps/unix/sysv/linux/s390/bits/rseq.h | 37 +++
.../unix/sysv/linux/s390/s390-32/ld.abilist | 3 +
.../unix/sysv/linux/s390/s390-64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/sched_getcpu.c | 19 +-
sysdeps/unix/sysv/linux/sh/be/ld.abilist | 3 +
sysdeps/unix/sysv/linux/sh/le/ld.abilist | 3 +
.../unix/sysv/linux/sparc/sparc32/ld.abilist | 3 +
.../unix/sysv/linux/sparc/sparc64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/sys/rseq.h | 184 +++++++++++++
sysdeps/unix/sysv/linux/tst-rseq-disable.c | 95 +++++++
sysdeps/unix/sysv/linux/tst-rseq-nptl.c | 260 ++++++++++++++++++
sysdeps/unix/sysv/linux/tst-rseq.c | 72 +++++
sysdeps/unix/sysv/linux/tst-rseq.h | 57 ++++
sysdeps/unix/sysv/linux/x86/bits/rseq.h | 30 ++
sysdeps/unix/sysv/linux/x86_64/64/ld.abilist | 3 +
sysdeps/unix/sysv/linux/x86_64/x32/ld.abilist | 3 +
sysdeps/x86/nptl/thread_pointer.h | 33 +++
63 files changed, 1539 insertions(+), 5 deletions(-)
create mode 100644 sysdeps/csky/nptl/thread_pointer.h
create mode 100644 sysdeps/hppa/nptl/thread_pointer.h
create mode 100644 sysdeps/ia64/nptl/thread_pointer.h
create mode 100644 sysdeps/m68k/nptl/thread_pointer.h
create mode 100644 sysdeps/microblaze/nptl/thread_pointer.h
create mode 100644 sysdeps/nptl/thread_pointer.h
create mode 100644 sysdeps/powerpc/nptl/thread_pointer.h
create mode 100644 sysdeps/sparc/nptl/thread_pointer.h
create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/arm/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/mips/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/rseq-internal.h
create mode 100644 sysdeps/unix/sysv/linux/s390/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/sys/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-disable.c
create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-nptl.c
create mode 100644 sysdeps/unix/sysv/linux/tst-rseq.c
create mode 100644 sysdeps/unix/sysv/linux/tst-rseq.h
create mode 100644 sysdeps/unix/sysv/linux/x86/bits/rseq.h
create mode 100644 sysdeps/x86/nptl/thread_pointer.h
base-commit: 68007900beef12000ed90f38c251eaf32fbc0490
--
2.33.1
More information about the Libc-alpha
mailing list