This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 0/5] Restartable Sequences support for glibc 2.30
- From: Mathieu Desnoyers <mathieu dot desnoyers at efficios dot com>
- To: Carlos O'Donell <carlos at redhat dot com>
- Cc: Florian Weimer <fweimer at redhat dot com>, Joseph Myers <joseph at codesourcery dot com>, Szabolcs Nagy <szabolcs dot nagy at arm dot com>, libc-alpha at sourceware dot org, Mathieu Desnoyers <mathieu dot desnoyers at efficios dot com>
- Date: Tue, 16 Apr 2019 13:32:11 -0400
- Subject: [PATCH 0/5] Restartable Sequences support for glibc 2.30
- Dkim-filter: OpenDKIM Filter v2.10.3 mail.efficios.com 91D241D3C20
Hi,
This patchset implements basic support for the "rseq" Linux system call
in glibc by registering the rseq TLS abi.
One patch in this series modifies sched_getcpu() to speed up reading the
current CPU number by reading __rseq_abi.cpu_id when rseq is available.
Some of the Reviewed-by tags provided in the last round were not
included because additional changes were made.
Please consider for inclusion into glibc,
Thanks,
Mathieu
Mathieu Desnoyers (5):
glibc: Perform rseq(2) registration at C startup and thread creation
(v8)
glibc: sched_getcpu(): use rseq cpu_id TLS on Linux (v2)
support record failure: allow use from constructor
support: implement xpthread key create/delete
rseq registration tests (v3)
NEWS | 15 +
csu/libc-start.c | 14 +-
misc/rseq-internal.h | 39 ++
nptl/pthread_create.c | 9 +
support/Makefile | 2 +
support/check.h | 4 +
support/support_record_failure.c | 18 +-
support/xpthread_key_create.c | 25 ++
support/xpthread_key_delete.c | 25 ++
support/xthread.h | 2 +
sysdeps/unix/sysv/linux/Makefile | 8 +-
sysdeps/unix/sysv/linux/Versions | 4 +
sysdeps/unix/sysv/linux/aarch64/bits/rseq.h | 32 ++
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 +
sysdeps/unix/sysv/linux/arm/libc.abilist | 2 +
sysdeps/unix/sysv/linux/bits/rseq.h | 30 ++
sysdeps/unix/sysv/linux/csky/libc.abilist | 2 +
sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 +
sysdeps/unix/sysv/linux/i386/libc.abilist | 2 +
sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 +
.../sysv/linux/m68k/coldfire/libc.abilist | 2 +
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 +
.../unix/sysv/linux/microblaze/libc.abilist | 2 +
.../sysv/linux/mips/mips32/fpu/libc.abilist | 2 +
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 +
.../sysv/linux/mips/mips64/n32/libc.abilist | 2 +
.../sysv/linux/mips/mips64/n64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 +
.../linux/powerpc/powerpc32/fpu/libc.abilist | 2 +
.../powerpc/powerpc32/nofpu/libc.abilist | 2 +
.../linux/powerpc/powerpc64/be/libc.abilist | 2 +
.../linux/powerpc/powerpc64/le/libc.abilist | 2 +
.../unix/sysv/linux/riscv/rv64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/rseq-internal.h | 89 +++++
sysdeps/unix/sysv/linux/rseq-sym.c | 64 +++
sysdeps/unix/sysv/linux/s390/bits/rseq.h | 31 ++
.../unix/sysv/linux/s390/s390-32/libc.abilist | 2 +
.../unix/sysv/linux/s390/s390-64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/sched_getcpu.c | 27 +-
sysdeps/unix/sysv/linux/sh/libc.abilist | 2 +
.../sysv/linux/sparc/sparc32/libc.abilist | 2 +
.../sysv/linux/sparc/sparc64/libc.abilist | 2 +
sysdeps/unix/sysv/linux/sys/rseq.h | 51 +++
sysdeps/unix/sysv/linux/tst-rseq-nptl.c | 367 ++++++++++++++++++
sysdeps/unix/sysv/linux/tst-rseq.c | 114 ++++++
sysdeps/unix/sysv/linux/x86/bits/rseq.h | 31 ++
.../unix/sysv/linux/x86_64/64/libc.abilist | 2 +
.../unix/sysv/linux/x86_64/x32/libc.abilist | 2 +
49 files changed, 1041 insertions(+), 14 deletions(-)
create mode 100644 misc/rseq-internal.h
create mode 100644 support/xpthread_key_create.c
create mode 100644 support/xpthread_key_delete.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/bits/rseq.h
create mode 100644 sysdeps/unix/sysv/linux/rseq-internal.h
create mode 100644 sysdeps/unix/sysv/linux/rseq-sym.c
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-nptl.c
create mode 100644 sysdeps/unix/sysv/linux/tst-rseq.c
create mode 100644 sysdeps/unix/sysv/linux/x86/bits/rseq.h
--
2.17.1