.. | .. |
---|
23 | 23 | smp_mb__before_atomic() { __fence{before-atomic}; } |
---|
24 | 24 | smp_mb__after_atomic() { __fence{after-atomic}; } |
---|
25 | 25 | smp_mb__after_spinlock() { __fence{after-spinlock}; } |
---|
| 26 | +smp_mb__after_unlock_lock() { __fence{after-unlock-lock}; } |
---|
| 27 | +barrier() { __fence{barrier}; } |
---|
26 | 28 | |
---|
27 | 29 | // Exchange |
---|
28 | 30 | xchg(X,V) __xchg{mb}(X,V) |
---|
.. | .. |
---|
46 | 48 | synchronize_rcu() { __fence{sync-rcu}; } |
---|
47 | 49 | synchronize_rcu_expedited() { __fence{sync-rcu}; } |
---|
48 | 50 | |
---|
| 51 | +// SRCU |
---|
| 52 | +srcu_read_lock(X) __srcu{srcu-lock}(X) |
---|
| 53 | +srcu_read_unlock(X,Y) { __srcu{srcu-unlock}(X,Y); } |
---|
| 54 | +synchronize_srcu(X) { __srcu{sync-srcu}(X); } |
---|
| 55 | +synchronize_srcu_expedited(X) { __srcu{sync-srcu}(X); } |
---|
| 56 | + |
---|
49 | 57 | // Atomic |
---|
50 | 58 | atomic_read(X) READ_ONCE(*X) |
---|
51 | 59 | atomic_set(X,V) { WRITE_ONCE(*X,V); } |
---|