5 #include "../arch/arch.h"
8 volatile unsigned int sequence;
11 static inline void seqlock_init(struct seqlock *s)
16 static inline unsigned int read_seqlock_begin(struct seqlock *s)
21 seq = atomic_load_acquire(&s->sequence);
30 static inline bool read_seqlock_retry(struct seqlock *s, unsigned int seq)
33 return s->sequence != seq;
36 static inline void write_seqlock_begin(struct seqlock *s)
38 s->sequence = atomic_load_acquire(&s->sequence) + 1;
41 static inline void write_seqlock_end(struct seqlock *s)
43 atomic_store_release(&s->sequence, s->sequence + 1);