diff options
Diffstat (limited to 'include/linux/seqlock.h')
| -rw-r--r-- | include/linux/seqlock.h | 27 | 
1 files changed, 19 insertions, 8 deletions
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h index cf87a24c0f92..535f158977b9 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h @@ -117,15 +117,15 @@ repeat:  }  /** - * read_seqcount_begin_no_lockdep - start seq-read critical section w/o lockdep + * raw_read_seqcount_begin - start seq-read critical section w/o lockdep   * @s: pointer to seqcount_t   * Returns: count to be passed to read_seqcount_retry   * - * read_seqcount_begin_no_lockdep opens a read critical section of the given + * raw_read_seqcount_begin opens a read critical section of the given   * seqcount, but without any lockdep checking. Validity of the critical   * section is tested by checking read_seqcount_retry function.   */ -static inline unsigned read_seqcount_begin_no_lockdep(const seqcount_t *s) +static inline unsigned raw_read_seqcount_begin(const seqcount_t *s)  {  	unsigned ret = __read_seqcount_begin(s);  	smp_rmb(); @@ -144,7 +144,7 @@ static inline unsigned read_seqcount_begin_no_lockdep(const seqcount_t *s)  static inline unsigned read_seqcount_begin(const seqcount_t *s)  {  	seqcount_lockdep_reader_access(s); -	return read_seqcount_begin_no_lockdep(s); +	return raw_read_seqcount_begin(s);  }  /** @@ -206,14 +206,26 @@ static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)  } + +static inline void raw_write_seqcount_begin(seqcount_t *s) +{ +	s->sequence++; +	smp_wmb(); +} + +static inline void raw_write_seqcount_end(seqcount_t *s) +{ +	smp_wmb(); +	s->sequence++; +} +  /*   * Sequence counter only version assumes that callers are using their   * own mutexing.   */  static inline void write_seqcount_begin_nested(seqcount_t *s, int subclass)  { -	s->sequence++; -	smp_wmb(); +	raw_write_seqcount_begin(s);  	seqcount_acquire(&s->dep_map, subclass, 0, _RET_IP_);  } @@ -225,8 +237,7 @@ static inline void write_seqcount_begin(seqcount_t *s)  static inline void write_seqcount_end(seqcount_t *s)  {  	seqcount_release(&s->dep_map, 1, _RET_IP_); -	smp_wmb(); -	s->sequence++; +	raw_write_seqcount_end(s);  }  /**  |