Changes

Jump to navigation Jump to search
m
no edit summary
Line 1: Line 1: −
Restartable sequences (<code>rseq</code>) are short, carefully defined sections of user-space code that enable efficient access to per-CPU data structures without relying on heavyweight synchronization primitives such as mutexes or atomic operations.
+
Restartable sequences (aka RSEQ) are short, carefully defined sections of user-space code that enable efficient access to per-CPU data structures without relying on heavyweight synchronization primitives such as mutexes or atomic operations.
   −
Support for <code>rseq</code> was introduced in the Linux kernel in version 4.18, allowing user-space programs to register critical code paths that the kernel can safely restart when a CPU migration or preemption occurs. This mechanism enables high-performance, scalable data access patterns while preserving correctness. [https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/ The 5-year journey to bring restartable sequences to Linux] article provides more information about how restartable sequences work, their design, use cases, and kernel integration.
+
Support for RSEQ was introduced in the Linux kernel in version 4.18, allowing user-space programs to register critical code paths that the kernel can safely restart when a CPU migration or preemption occurs. This mechanism enables high-performance, scalable data access patterns while preserving correctness. [https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/ The 5-year journey to bring restartable sequences to Linux] article provides more information about how restartable sequences work, their design, use cases, and kernel integration.
    
== Linux Kernel Interface for Restartable Sequences  ==
 
== Linux Kernel Interface for Restartable Sequences  ==
   −
The Linux kernel interface for <code>rseq</code> is intentionally minimal. It consists of a single system call:
+
The Linux kernel interface for RSEQ is intentionally minimal. It consists of a single system call:
 
<code>sys_rseq(struct rseq *rseq, uint32_t rseq_len, int flags, uint32_t sig)</code>
 
<code>sys_rseq(struct rseq *rseq, uint32_t rseq_len, int flags, uint32_t sig)</code>
   −
The full definition of the <code>rseq</code> data structures and related flags is provided in [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/rseq.h include/uapi/linux/rseq.h]:
+
The full definition of the RSEQ data structures and related flags is provided in [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/rseq.h include/uapi/linux/rseq.h]:
    
<pre>
 
<pre>
554

edits

Navigation menu