Skip to content

Commit f995443

Browse files
oleg-nesterovIngo Molnar
authored and
Ingo Molnar
committed
locking/seqlock: Simplify SEQCOUNT_LOCKNAME()
1. Kill the "lockmember" argument. It is always s->lock plus __seqprop_##lockname##_sequence() already uses s->lock and ignores "lockmember". 2. Kill the "lock_acquire" argument. __seqprop_##lockname##_sequence() can use the same "lockbase" prefix for _lock and _unlock. Apart from line numbers, gcc -E outputs the same code. Signed-off-by: Oleg Nesterov <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Waiman Long <[email protected]> Cc: Will Deacon <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Paul E. McKenney <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 4fbf8b1 commit f995443

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

include/linux/seqlock.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,9 @@ static inline void seqcount_lockdep_reader_access(const seqcount_t *s)
191191
* @lockname: "LOCKNAME" part of seqcount_LOCKNAME_t
192192
* @locktype: LOCKNAME canonical C data type
193193
* @preemptible: preemptibility of above locktype
194-
* @lockmember: argument for lockdep_assert_held()
195-
* @lockbase: associated lock release function (prefix only)
196-
* @lock_acquire: associated lock acquisition function (full call)
194+
* @lockbase: prefix for associated lock/unlock
197195
*/
198-
#define SEQCOUNT_LOCKNAME(lockname, locktype, preemptible, lockmember, lockbase, lock_acquire) \
196+
#define SEQCOUNT_LOCKNAME(lockname, locktype, preemptible, lockbase) \
199197
typedef struct seqcount_##lockname { \
200198
seqcount_t seqcount; \
201199
__SEQ_LOCK(locktype *lock); \
@@ -216,7 +214,7 @@ __seqprop_##lockname##_sequence(const seqcount_##lockname##_t *s) \
216214
return seq; \
217215
\
218216
if (preemptible && unlikely(seq & 1)) { \
219-
__SEQ_LOCK(lock_acquire); \
217+
__SEQ_LOCK(lockbase##_lock(s->lock)); \
220218
__SEQ_LOCK(lockbase##_unlock(s->lock)); \
221219
\
222220
/* \
@@ -242,7 +240,7 @@ __seqprop_##lockname##_preemptible(const seqcount_##lockname##_t *s) \
242240
static __always_inline void \
243241
__seqprop_##lockname##_assert(const seqcount_##lockname##_t *s) \
244242
{ \
245-
__SEQ_LOCK(lockdep_assert_held(lockmember)); \
243+
__SEQ_LOCK(lockdep_assert_held(s->lock)); \
246244
}
247245

248246
/*
@@ -271,10 +269,10 @@ static inline void __seqprop_assert(const seqcount_t *s)
271269

272270
#define __SEQ_RT IS_ENABLED(CONFIG_PREEMPT_RT)
273271

274-
SEQCOUNT_LOCKNAME(raw_spinlock, raw_spinlock_t, false, s->lock, raw_spin, raw_spin_lock(s->lock))
275-
SEQCOUNT_LOCKNAME(spinlock, spinlock_t, __SEQ_RT, s->lock, spin, spin_lock(s->lock))
276-
SEQCOUNT_LOCKNAME(rwlock, rwlock_t, __SEQ_RT, s->lock, read, read_lock(s->lock))
277-
SEQCOUNT_LOCKNAME(mutex, struct mutex, true, s->lock, mutex, mutex_lock(s->lock))
272+
SEQCOUNT_LOCKNAME(raw_spinlock, raw_spinlock_t, false, raw_spin)
273+
SEQCOUNT_LOCKNAME(spinlock, spinlock_t, __SEQ_RT, spin)
274+
SEQCOUNT_LOCKNAME(rwlock, rwlock_t, __SEQ_RT, read)
275+
SEQCOUNT_LOCKNAME(mutex, struct mutex, true, mutex)
278276

279277
/*
280278
* SEQCNT_LOCKNAME_ZERO - static initializer for seqcount_LOCKNAME_t

0 commit comments

Comments
 (0)