Commit 00b3c28bd753afb46fb26b2f9e21dd27dacd80d4
Committed by
Linus Torvalds
1 parent
f6081bd3f8
Exists in
master
and in
4 other branches
asm-generic/atomic.h: add atomic_set_mask() helper
Since arches are expected to implement this guy, add a common version for people the same way as atomic_clear_mask is handled. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Cc: Arun Sharma <asharma@fb.com> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 16 additions and 0 deletions Side-by-side Diff
include/asm-generic/atomic.h
... | ... | @@ -157,6 +157,22 @@ |
157 | 157 | raw_local_irq_restore(flags); |
158 | 158 | } |
159 | 159 | |
160 | +/** | |
161 | + * atomic_set_mask - Atomically set bits in atomic variable | |
162 | + * @mask: Mask of the bits to be set | |
163 | + * @v: pointer of type atomic_t | |
164 | + * | |
165 | + * Atomically sets the bits set in @mask in @v | |
166 | + */ | |
167 | +static inline void atomic_set_mask(unsigned int mask, atomic_t *v) | |
168 | +{ | |
169 | + unsigned long flags; | |
170 | + | |
171 | + raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */ | |
172 | + v->counter |= mask; | |
173 | + raw_local_irq_restore(flags); | |
174 | +} | |
175 | + | |
160 | 176 | /* Assume that atomic operations are already serializing */ |
161 | 177 | #define smp_mb__before_atomic_dec() barrier() |
162 | 178 | #define smp_mb__after_atomic_dec() barrier() |