diff options
Diffstat (limited to 'include/linux/u64_stats_sync.h')
-rw-r--r-- | include/linux/u64_stats_sync.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h index 5bdbd9f49395..07ee0f84a46c 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h | |||
@@ -90,6 +90,28 @@ static inline void u64_stats_update_end(struct u64_stats_sync *syncp) | |||
90 | #endif | 90 | #endif |
91 | } | 91 | } |
92 | 92 | ||
93 | static inline unsigned long | ||
94 | u64_stats_update_begin_irqsave(struct u64_stats_sync *syncp) | ||
95 | { | ||
96 | unsigned long flags = 0; | ||
97 | |||
98 | #if BITS_PER_LONG==32 && defined(CONFIG_SMP) | ||
99 | local_irq_save(flags); | ||
100 | write_seqcount_begin(&syncp->seq); | ||
101 | #endif | ||
102 | return flags; | ||
103 | } | ||
104 | |||
105 | static inline void | ||
106 | u64_stats_update_end_irqrestore(struct u64_stats_sync *syncp, | ||
107 | unsigned long flags) | ||
108 | { | ||
109 | #if BITS_PER_LONG==32 && defined(CONFIG_SMP) | ||
110 | write_seqcount_end(&syncp->seq); | ||
111 | local_irq_restore(flags); | ||
112 | #endif | ||
113 | } | ||
114 | |||
93 | static inline void u64_stats_update_begin_raw(struct u64_stats_sync *syncp) | 115 | static inline void u64_stats_update_begin_raw(struct u64_stats_sync *syncp) |
94 | { | 116 | { |
95 | #if BITS_PER_LONG==32 && defined(CONFIG_SMP) | 117 | #if BITS_PER_LONG==32 && defined(CONFIG_SMP) |