]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
seqlock: Introduce scoped_seqlock_read()
authorPeter Zijlstra <peterz@infradead.org>
Thu, 9 Oct 2025 20:11:54 +0000 (22:11 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 21 Oct 2025 10:31:57 +0000 (12:31 +0200)
commitcc39f3872c0865bef992b713338df369554fa9e0
tree01b33d0315b979baa2e35f92d1d12a8b1e6ace3c
parent28a0ee311960baad97bf85e1e995aed4a71e22a2
seqlock: Introduce scoped_seqlock_read()

The read_seqbegin/need_seqretry/done_seqretry API is cumbersome and
error prone. With the new helper the "typical" code like

int seq, nextseq;
unsigned long flags;

nextseq = 0;
do {
seq = nextseq;
flags = read_seqbegin_or_lock_irqsave(&seqlock, &seq);

// read-side critical section

nextseq = 1;
} while (need_seqretry(&seqlock, seq));
done_seqretry_irqrestore(&seqlock, seq, flags);

can be rewritten as

scoped_seqlock_read (&seqlock, ss_lock_irqsave) {
// read-side critical section
}

Original idea by Oleg Nesterov; with contributions from Linus.

Originally-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
include/linux/seqlock.h