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: Mon, 22 Apr 2019 13:56:18 -0400
- Subject: [PATCH 0/5] Restartable Sequences support for glibc 2.30
- Dkim-filter: OpenDKIM Filter v2.10.3 mail.efficios.com 96AD21A848C
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.
This round takes care of the few comments received in the previous one.
Please consider for inclusion into glibc,
Thanks,
Mathieu
Mathieu Desnoyers (5):
glibc: Perform rseq(2) registration at C startup and thread creation
(v9)
glibc: sched_getcpu(): use rseq cpu_id TLS on Linux (v3)
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 | 44 +++
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 | 24 +-
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, 1050 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