Thread (2 messages) flat view 2 messages, 2 authors, 2020-01-07

Re: [RFC PATCH glibc 09/13] glibc: Perform rseq(2) registration at C startup and thread creation (v13)

From: Florian Weimer <hidden>
Date: 2020-01-07 12:24:13
Also in: lkml

* Mathieu Desnoyers:
Register rseq(2) TLS for each thread (including main), and unregister
for each thread (excluding main). "rseq" stands for Restartable
Sequences.

See the rseq(2) man page proposed here:
  https://lkml.org/lkml/2018/9/19/647

This patch is based on glibc-2.30. The rseq(2) system call was merged
into Linux 4.18.
This patch needs to be updated for some be/le abilist splits.
Big-endian ABI lists for arm, microblaze, sh, appear to be missing.
This is something that can be checked with build-many-glibcs.py.
quoted hunk
diff --git a/manual/threads.texi b/manual/threads.texi
index 0858ef8f92..059f781120 100644
--- a/manual/threads.texi
+++ b/manual/threads.texi
@@ -881,3 +881,20 @@ Behaves like @code{pthread_timedjoin_np} except that the absolute time in
 @c pthread_spin_unlock
 @c pthread_testcancel
 @c pthread_yield
+
+@node Restartable Sequences
+@section Restartable Sequences
+@cindex rseq
+
+This section describes the @glibcadj{} Restartable Sequences integration.
+
+The @glibcadj{} implements a __rseq_abi TLS symbol to interact with the
   @Theglibc{}                  @code{__rseq_abi}

+Restartable Sequences system call (Linux-specific). The layout of this
+structure is defined by the Linux kernel rseq.h UAPI. Registration of each
+thread's __rseq_abi is performed by @glibcadj{} at libc initialization and
                                       @theglibc{}
           @code{__rseq_abi}
+pthread creation.
+Each supported architecture provide a RSEQ_SIG signature in sys/rseq.h. That
                                         @code{RSEQ_SIG}       @file{sys/rseq.h} 
+signature is expected to be present in the code before each Restartable
+Sequences abort handler. Failure to provide the expected signature may
+terminate the process with a Segmentation fault.

Two spaces at the end of setences, please.

The manual should use @deftypevar to create an index entry etc. for
__rseq_abi.  See argp_program_version for an example of how to do this.

I think current policy is to have documentation for at least the minimum
functionality in the manual.  I understand that it makes it a lot of
work to write patches which add system call wrappers.

Thanks,
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help