-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH] bitops: generic ext2_{set,clear,test,find_first_zero,find_nex…
…t_zero}_bit() This patch introduces the C-language equivalents of the functions below: int ext2_set_bit(int nr, volatile unsigned long *addr); int ext2_clear_bit(int nr, volatile unsigned long *addr); int ext2_test_bit(int nr, const volatile unsigned long *addr); unsigned long ext2_find_first_zero_bit(const unsigned long *addr, unsigned long size); unsinged long ext2_find_next_zero_bit(const unsigned long *addr, unsigned long size); In include/asm-generic/bitops/ext2-non-atomic.h This code largely copied from: include/asm-powerpc/bitops.h include/asm-parisc/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>
- Loading branch information
Akinobu Mita
authored and
Linus Torvalds
committed
Mar 26, 2006
1 parent
a54baa1
commit 930ae74
Showing
3 changed files
with
144 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#ifndef _ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_ | ||
#define _ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_ | ||
|
||
#include <asm-generic/bitops/le.h> | ||
|
||
#define ext2_set_bit(nr,addr) \ | ||
generic___test_and_set_le_bit((nr),(unsigned long *)(addr)) | ||
#define ext2_clear_bit(nr,addr) \ | ||
generic___test_and_clear_le_bit((nr),(unsigned long *)(addr)) | ||
|
||
#define ext2_test_bit(nr,addr) \ | ||
generic_test_le_bit((nr),(unsigned long *)(addr)) | ||
#define ext2_find_first_zero_bit(addr, size) \ | ||
generic_find_first_zero_le_bit((unsigned long *)(addr), (size)) | ||
#define ext2_find_next_zero_bit(addr, size, off) \ | ||
generic_find_next_zero_le_bit((unsigned long *)(addr), (size), (off)) | ||
|
||
#endif /* _ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#ifndef _ASM_GENERIC_BITOPS_LE_H_ | ||
#define _ASM_GENERIC_BITOPS_LE_H_ | ||
|
||
#include <asm/types.h> | ||
#include <asm/byteorder.h> | ||
|
||
#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG) | ||
#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) | ||
|
||
#if defined(__LITTLE_ENDIAN) | ||
|
||
#define generic_test_le_bit(nr, addr) test_bit(nr, addr) | ||
#define generic___set_le_bit(nr, addr) __set_bit(nr, addr) | ||
#define generic___clear_le_bit(nr, addr) __clear_bit(nr, addr) | ||
|
||
#define generic_test_and_set_le_bit(nr, addr) test_and_set_bit(nr, addr) | ||
#define generic_test_and_clear_le_bit(nr, addr) test_and_clear_bit(nr, addr) | ||
|
||
#define generic___test_and_set_le_bit(nr, addr) __test_and_set_bit(nr, addr) | ||
#define generic___test_and_clear_le_bit(nr, addr) __test_and_clear_bit(nr, addr) | ||
|
||
#define generic_find_next_zero_le_bit(addr, size, offset) find_next_zero_bit(addr, size, offset) | ||
|
||
#elif defined(__BIG_ENDIAN) | ||
|
||
#define generic_test_le_bit(nr, addr) \ | ||
test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
#define generic___set_le_bit(nr, addr) \ | ||
__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
#define generic___clear_le_bit(nr, addr) \ | ||
__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
|
||
#define generic_test_and_set_le_bit(nr, addr) \ | ||
test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
#define generic_test_and_clear_le_bit(nr, addr) \ | ||
test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
|
||
#define generic___test_and_set_le_bit(nr, addr) \ | ||
__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
#define generic___test_and_clear_le_bit(nr, addr) \ | ||
__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) | ||
|
||
extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr, | ||
unsigned long size, unsigned long offset); | ||
|
||
#else | ||
#error "Please fix <asm/byteorder.h>" | ||
#endif | ||
|
||
#define generic_find_first_zero_le_bit(addr, size) \ | ||
generic_find_next_zero_le_bit((addr), (size), 0) | ||
|
||
#endif /* _ASM_GENERIC_BITOPS_LE_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters