Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] bitops: generic ext2_{set,clear}_bit_atomic()

This patch introduces the C-language equivalents of the functions below:

int ext2_set_bit_atomic(int nr, volatile unsigned long *addr);
int ext2_clear_bit_atomic(int nr, volatile unsigned long *addr);

In include/asm-generic/bitops/ext2-atomic.h

This code largely copied from: include/asm-sparc/bitops.h

Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Akinobu Mita and committed by
Linus Torvalds
765f34fe 930ae745

+22
+22
include/asm-generic/bitops/ext2-atomic.h
··· 1 + #ifndef _ASM_GENERIC_BITOPS_EXT2_ATOMIC_H_ 2 + #define _ASM_GENERIC_BITOPS_EXT2_ATOMIC_H_ 3 + 4 + #define ext2_set_bit_atomic(lock, nr, addr) \ 5 + ({ \ 6 + int ret; \ 7 + spin_lock(lock); \ 8 + ret = ext2_set_bit((nr), (unsigned long *)(addr)); \ 9 + spin_unlock(lock); \ 10 + ret; \ 11 + }) 12 + 13 + #define ext2_clear_bit_atomic(lock, nr, addr) \ 14 + ({ \ 15 + int ret; \ 16 + spin_lock(lock); \ 17 + ret = ext2_clear_bit((nr), (unsigned long *)(addr)); \ 18 + spin_unlock(lock); \ 19 + ret; \ 20 + }) 21 + 22 + #endif /* _ASM_GENERIC_BITOPS_EXT2_ATOMIC_H_ */