diff --git a/sys/compat/linuxkpi/common/include/linux/seqlock.h b/sys/compat/linuxkpi/common/include/linux/seqlock.h --- a/sys/compat/linuxkpi/common/include/linux/seqlock.h +++ b/sys/compat/linuxkpi/common/include/linux/seqlock.h @@ -36,6 +36,8 @@ #include #include +#include + struct lock_class_key; struct seqcount { @@ -84,9 +86,22 @@ struct seqcount_mutex: seqc_write_end \ )(&(s)->seqc) +static inline void +write_seqcount_invalidate(struct seqcount_mutex *seqcount) +{ + atomic_thread_fence_rel(); + seqcount->seqc += SEQC_MOD * 2; +} + #define read_seqcount_begin(s) seqc_read(&(s)->seqc) #define raw_read_seqcount(s) seqc_read_any(&(s)->seqc) +static inline unsigned int +seqprop_sequence(const seqcount_mutex_t *seqcount) +{ + return (atomic_load_int(&seqcount->seqc)); +} + /* * XXX: Are predicts from inline functions still not honored by clang? */