seqlock_init (seqlock_t *sl); void write_seqlock (seqlock_t *sl); void write_sequnlock (seqlock_t *sl); int write_tryseqlock (seqlock_t *sl); read_seqbegin (const seqlock_t *sl); int read_seqretry (const seqlock_t *sl, unsigned start);
version incremented once before write and once after write
readers require same version before read and after read
even version means consistent, odd version means retry