diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 22:12:12 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 22:12:12 -0500 |
commit | 0b61a2ba5dfd1620731e717d686e6ade657fd975 (patch) | |
tree | dea84efd43934a7d6139048f87c4ba86d68d4b6d /fs/xfs/xfs_bit.h | |
parent | a13ff0bb3feda8b1fcffc69951320277ed7c4101 (diff) | |
parent | de2eeea609b55e8c3994133a565b39edeaaaaf69 (diff) |
Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6
* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6: (62 commits)
[XFS] add __init/__exit mark to specific init/cleanup functions
[XFS] Fix oops in xfs_file_readdir()
[XFS] kill xfs_root
[XFS] keep i_nlink updated and use proper accessors
[XFS] stop updating inode->i_blocks
[XFS] Make xfs_ail_check check less by default
[XFS] Move AIL pushing into it's own thread
[XFS] use generic_permission
[XFS] stop re-checking permissions in xfs_swapext
[XFS] clean up xfs_swapext
[XFS] remove permission check from xfs_change_file_space
[XFS] prevent panic during log recovery due to bogus op_hdr length
[XFS] Cleanup various fid related bits:
[XFS] Fix xfs_lowbit64
[XFS] Remove CFORK macros and use code directly in IFORK and DFORK macros.
[XFS] kill superflous buffer locking (2nd attempt)
[XFS] Use kernel-supplied "roundup_pow_of_two" for simplicity
[XFS] Remove the BPCSHIFT and NB* based macros from XFS.
[XFS] Remove bogus assert
[XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config
...
Diffstat (limited to 'fs/xfs/xfs_bit.h')
-rw-r--r-- | fs/xfs/xfs_bit.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/fs/xfs/xfs_bit.h b/fs/xfs/xfs_bit.h index 082641a9782c..325a007dec91 100644 --- a/fs/xfs/xfs_bit.h +++ b/fs/xfs/xfs_bit.h | |||
@@ -47,13 +47,30 @@ static inline __uint64_t xfs_mask64lo(int n) | |||
47 | } | 47 | } |
48 | 48 | ||
49 | /* Get high bit set out of 32-bit argument, -1 if none set */ | 49 | /* Get high bit set out of 32-bit argument, -1 if none set */ |
50 | extern int xfs_highbit32(__uint32_t v); | 50 | static inline int xfs_highbit32(__uint32_t v) |
51 | 51 | { | |
52 | /* Get low bit set out of 64-bit argument, -1 if none set */ | 52 | return fls(v) - 1; |
53 | extern int xfs_lowbit64(__uint64_t v); | 53 | } |
54 | 54 | ||
55 | /* Get high bit set out of 64-bit argument, -1 if none set */ | 55 | /* Get high bit set out of 64-bit argument, -1 if none set */ |
56 | extern int xfs_highbit64(__uint64_t); | 56 | static inline int xfs_highbit64(__uint64_t v) |
57 | { | ||
58 | return fls64(v) - 1; | ||
59 | } | ||
60 | |||
61 | /* Get low bit set out of 32-bit argument, -1 if none set */ | ||
62 | static inline int xfs_lowbit32(__uint32_t v) | ||
63 | { | ||
64 | __uint32_t t = v; | ||
65 | return (t) ? find_first_bit((unsigned long *)&t, 32) : -1; | ||
66 | } | ||
67 | |||
68 | /* Get low bit set out of 64-bit argument, -1 if none set */ | ||
69 | static inline int xfs_lowbit64(__uint64_t v) | ||
70 | { | ||
71 | __uint64_t t = v; | ||
72 | return (t) ? find_first_bit((unsigned long *)&t, 64) : -1; | ||
73 | } | ||
57 | 74 | ||
58 | /* Return whether bitmap is empty (1 == empty) */ | 75 | /* Return whether bitmap is empty (1 == empty) */ |
59 | extern int xfs_bitmap_empty(uint *map, uint size); | 76 | extern int xfs_bitmap_empty(uint *map, uint size); |