2 * bitops.h --- Bitmap frobbing code. The byte swapping routines are
5 * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
8 * This file may be redistributed under the terms of the GNU Library
9 * General Public License, version 2.
13 #ifdef WORDS_BIGENDIAN
14 #define ext2fs_cpu_to_le64(x) ((__force __le64)ext2fs_swab64((__u64)(x)))
15 #define ext2fs_le64_to_cpu(x) ext2fs_swab64((__force __u64)(__le64)(x))
16 #define ext2fs_cpu_to_le32(x) ((__force __le32)ext2fs_swab32((__u32)(x)))
17 #define ext2fs_le32_to_cpu(x) ext2fs_swab32((__force __u32)(__le32)(x))
18 #define ext2fs_cpu_to_le16(x) ((__force __le16)ext2fs_swab16((__u16)(x)))
19 #define ext2fs_le16_to_cpu(x) ext2fs_swab16((__force __u16)(__le16)(x))
21 #define ext2fs_cpu_to_be64(x) ((__force __be64)(__u64)(x))
22 #define ext2fs_be64_to_cpu(x) ((__force __u64)(__be64)(x))
23 #define ext2fs_cpu_to_be32(x) ((__force __be32)(__u32)(x))
24 #define ext2fs_be32_to_cpu(x) ((__force __u32)(__be32)(x))
25 #define ext2fs_cpu_to_be16(x) ((__force __be16)(__u16)(x))
26 #define ext2fs_be16_to_cpu(x) ((__force __u16)(__be16)(x))
28 #define ext2fs_cpu_to_le64(x) ((__force __le64)(__u64)(x))
29 #define ext2fs_le64_to_cpu(x) ((__force __u64)(__le64)(x))
30 #define ext2fs_cpu_to_le32(x) ((__force __le32)(__u32)(x))
31 #define ext2fs_le32_to_cpu(x) ((__force __u32)(__le32)(x))
32 #define ext2fs_cpu_to_le16(x) ((__force __le16)(__u16)(x))
33 #define ext2fs_le16_to_cpu(x) ((__force __u16)(__le16)(x))
35 #define ext2fs_cpu_to_be64(x) ((__force __be64)ext2fs_swab64((__u64)(x)))
36 #define ext2fs_be64_to_cpu(x) ext2fs_swab64((__force __u64)(__be64)(x))
37 #define ext2fs_cpu_to_be32(x) ((__force __be32)ext2fs_swab32((__u32)(x)))
38 #define ext2fs_be32_to_cpu(x) ext2fs_swab32((__force __u32)(__be32)(x))
39 #define ext2fs_cpu_to_be16(x) ((__force __be16)ext2fs_swab16((__u16)(x)))
40 #define ext2fs_be16_to_cpu(x) ext2fs_swab16((__force __u16)(__be16)(x))
44 * EXT2FS bitmap manipulation routines.
47 /* Support for sending warning messages from the inline subroutines */
48 extern const char *ext2fs_block_string;
49 extern const char *ext2fs_inode_string;
50 extern const char *ext2fs_mark_string;
51 extern const char *ext2fs_unmark_string;
52 extern const char *ext2fs_test_string;
53 extern void ext2fs_warn_bitmap(errcode_t errcode, unsigned long arg,
54 const char *description);
55 extern void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
56 int code, unsigned long arg);
58 #ifdef NO_INLINE_FUNCS
59 extern void ext2fs_fast_set_bit(unsigned int nr,void * addr);
60 extern void ext2fs_fast_clear_bit(unsigned int nr, void * addr);
61 extern void ext2fs_fast_set_bit64(__u64 nr,void * addr);
62 extern void ext2fs_fast_clear_bit64(__u64 nr, void * addr);
63 extern __u16 ext2fs_swab16(__u16 val);
64 extern __u32 ext2fs_swab32(__u32 val);
65 extern __u64 ext2fs_swab64(__u64 val);
67 extern int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
68 extern int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
70 extern int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
72 extern int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
73 extern int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
75 extern int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
77 extern void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
79 extern void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
81 extern int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
84 extern void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
86 extern void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
88 extern int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
90 extern blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap);
91 extern ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap);
92 extern blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap);
93 extern ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap);
95 extern void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
96 blk_t block, int num);
97 extern void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
98 blk_t block, int num);
99 extern int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
100 blk_t block, int num);
103 /* These functions routines moved to gen_bitmap.c */
104 extern void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
105 blk_t block, int num);
106 extern void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
107 blk_t block, int num);
108 extern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
109 blk_t block, int num);
110 extern int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap,
111 ext2_ino_t inode, int num);
112 extern int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
114 extern int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
116 extern int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
118 extern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
119 blk_t block, int num);
120 extern void ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map);
121 extern __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap);
122 extern __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap);
124 /* 64-bit versions */
126 #ifdef NO_INLINE_FUNCS
127 extern int ext2fs_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
129 extern int ext2fs_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
131 extern int ext2fs_test_block_bitmap2(ext2fs_block_bitmap bitmap,
134 extern int ext2fs_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
136 extern int ext2fs_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
138 extern int ext2fs_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
141 extern void ext2fs_fast_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
143 extern void ext2fs_fast_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
145 extern int ext2fs_fast_test_block_bitmap2(ext2fs_block_bitmap bitmap,
148 extern void ext2fs_fast_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
150 extern void ext2fs_fast_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
152 extern int ext2fs_fast_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
154 extern errcode_t ext2fs_find_first_zero_block_bitmap2(ext2fs_block_bitmap bitmap,
158 extern errcode_t ext2fs_find_first_zero_inode_bitmap2(ext2fs_inode_bitmap bitmap,
162 extern errcode_t ext2fs_find_first_set_block_bitmap2(ext2fs_block_bitmap bitmap,
166 extern errcode_t ext2fs_find_first_set_inode_bitmap2(ext2fs_inode_bitmap bitmap,
170 extern blk64_t ext2fs_get_block_bitmap_start2(ext2fs_block_bitmap bitmap);
171 extern ext2_ino_t ext2fs_get_inode_bitmap_start2(ext2fs_inode_bitmap bitmap);
172 extern blk64_t ext2fs_get_block_bitmap_end2(ext2fs_block_bitmap bitmap);
173 extern ext2_ino_t ext2fs_get_inode_bitmap_end2(ext2fs_inode_bitmap bitmap);
175 extern int ext2fs_fast_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
178 extern void ext2fs_fast_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
181 extern void ext2fs_fast_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
186 /* These routines moved to gen_bitmap64.c */
187 extern void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap);
188 extern errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
189 ext2fs_generic_bitmap bm1,
190 ext2fs_generic_bitmap bm2);
191 extern void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap);
192 extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
194 extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
196 extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
198 extern int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
199 blk64_t block, unsigned int num);
200 extern __u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap);
201 extern __u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap);
202 extern int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
203 blk64_t block, unsigned int num);
204 extern void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
205 blk64_t block, unsigned int num);
206 extern void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
207 blk64_t block, unsigned int num);
208 extern errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap,
209 __u64 start, __u64 end,
211 extern errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
212 __u64 start, __u64 end,
216 * The inline routines themselves...
218 * If NO_INLINE_FUNCS is defined, then we won't try to do inline
219 * functions at all; they will be included as normal functions in
222 #ifdef NO_INLINE_FUNCS
223 #if (defined(__GNUC__) && (defined(__i386__) || defined(__i486__) || \
225 /* This prevents bitops.c from trying to include the C */
226 /* function version of these functions */
227 #define _EXT2_HAVE_ASM_BITOPS_
229 #endif /* NO_INLINE_FUNCS */
231 #if (defined(INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS))
232 #ifdef INCLUDE_INLINE_FUNCS
233 #if (__STDC_VERSION__ >= 199901L)
234 #define _INLINE_ extern inline
236 #define _INLINE_ inline
238 #else /* !INCLUDE_INLINE FUNCS */
239 #if (__STDC_VERSION__ >= 199901L)
240 #define _INLINE_ inline
243 #define _INLINE_ extern __inline__
244 #else /* For Watcom C */
245 #define _INLINE_ extern inline
246 #endif /* __GNUC__ */
247 #endif /* __STDC_VERSION__ >= 199901L */
248 #endif /* INCLUDE_INLINE_FUNCS */
251 * Fast bit set/clear functions that doesn't need to return the
252 * previous bit value.
255 _INLINE_ void ext2fs_fast_set_bit(unsigned int nr,void * addr)
257 unsigned char *ADDR = (unsigned char *) addr;
260 *ADDR |= (unsigned char) (1 << (nr & 0x07));
263 _INLINE_ void ext2fs_fast_clear_bit(unsigned int nr, void * addr)
265 unsigned char *ADDR = (unsigned char *) addr;
268 *ADDR &= (unsigned char) ~(1 << (nr & 0x07));
272 _INLINE_ void ext2fs_fast_set_bit64(__u64 nr, void * addr)
274 unsigned char *ADDR = (unsigned char *) addr;
277 *ADDR |= (unsigned char) (1 << (nr & 0x07));
280 _INLINE_ void ext2fs_fast_clear_bit64(__u64 nr, void * addr)
282 unsigned char *ADDR = (unsigned char *) addr;
285 *ADDR &= (unsigned char) ~(1 << (nr & 0x07));
289 #if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
290 (defined(__i386__) || defined(__i486__) || defined(__i586__)))
292 #define _EXT2_HAVE_ASM_BITOPS_
293 #define _EXT2_HAVE_ASM_SWAB_
296 * These are done by inline assembly for speed reasons.....
298 * All bitoperations return 0 if the bit was cleared before the
299 * operation and != 0 if it was not. Bit 0 is the LSB of addr; bit 32
300 * is the LSB of (addr+1).
304 * Some hacks to defeat gcc over-optimizations..
306 struct __dummy_h { unsigned long a[100]; };
307 #define EXT2FS_ADDR (*(struct __dummy_h *) addr)
308 #define EXT2FS_CONST_ADDR (*(const struct __dummy_h *) addr)
310 _INLINE_ int ext2fs_set_bit(unsigned int nr, void * addr)
314 addr = (void *) (((unsigned char *) addr) + (nr >> 3));
315 __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0"
316 :"=r" (oldbit),"+m" (EXT2FS_ADDR)
321 _INLINE_ int ext2fs_clear_bit(unsigned int nr, void * addr)
325 addr = (void *) (((unsigned char *) addr) + (nr >> 3));
326 __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0"
327 :"=r" (oldbit),"+m" (EXT2FS_ADDR)
332 _INLINE_ int ext2fs_test_bit(unsigned int nr, const void * addr)
336 addr = (const void *) (((const unsigned char *) addr) + (nr >> 3));
337 __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0"
339 :"m" (EXT2FS_CONST_ADDR),"r" (nr & 7));
343 _INLINE_ __u32 ext2fs_swab32(__u32 val)
345 #ifdef EXT2FS_REQUIRE_486
346 __asm__("bswap %0" : "=r" (val) : "0" (val));
348 __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
349 "rorl $16,%0\n\t" /* swap words */
350 "xchgb %b0,%h0" /* swap higher bytes */
357 _INLINE_ __u16 ext2fs_swab16(__u16 val)
359 __asm__("xchgb %b0,%h0" /* swap bytes */ \
370 #if !defined(_EXT2_HAVE_ASM_SWAB_)
372 _INLINE_ __u16 ext2fs_swab16(__u16 val)
374 return (val >> 8) | (__u16) (val << 8);
377 _INLINE_ __u32 ext2fs_swab32(__u32 val)
379 return ((val>>24) | ((val>>8)&0xFF00) |
380 ((val<<8)&0xFF0000) | (val<<24));
383 #endif /* !_EXT2_HAVE_ASM_SWAB */
385 _INLINE_ __u64 ext2fs_swab64(__u64 val)
387 return (ext2fs_swab32((__u32) (val >> 32)) |
388 (((__u64)ext2fs_swab32(val & 0xFFFFFFFFUL)) << 32));
391 _INLINE_ int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap,
394 return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
398 _INLINE_ int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
401 return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
405 _INLINE_ int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap,
408 return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
412 _INLINE_ int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
415 return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
419 _INLINE_ int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
422 return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
426 _INLINE_ int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
429 return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
433 _INLINE_ void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
436 ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
439 _INLINE_ void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
442 ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
445 _INLINE_ int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
448 return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
452 _INLINE_ void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
455 ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
458 _INLINE_ void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
461 ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
464 _INLINE_ int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
467 return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
471 _INLINE_ blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap)
473 return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
476 _INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap)
478 return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
481 _INLINE_ blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap)
483 return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
486 _INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap)
488 return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
491 _INLINE_ int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
492 blk_t block, int num)
494 return ext2fs_test_block_bitmap_range(bitmap, block, num);
497 _INLINE_ void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
498 blk_t block, int num)
500 ext2fs_mark_block_bitmap_range(bitmap, block, num);
503 _INLINE_ void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
504 blk_t block, int num)
506 ext2fs_unmark_block_bitmap_range(bitmap, block, num);
509 /* 64-bit versions */
511 _INLINE_ int ext2fs_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
514 return ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap,
518 _INLINE_ int ext2fs_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
521 return ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
524 _INLINE_ int ext2fs_test_block_bitmap2(ext2fs_block_bitmap bitmap,
527 return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
531 _INLINE_ int ext2fs_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
534 return ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap,
538 _INLINE_ int ext2fs_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
541 return ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap,
545 _INLINE_ int ext2fs_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
548 return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
552 _INLINE_ void ext2fs_fast_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
555 ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
558 _INLINE_ void ext2fs_fast_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
561 ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
564 _INLINE_ int ext2fs_fast_test_block_bitmap2(ext2fs_block_bitmap bitmap,
567 return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
571 _INLINE_ void ext2fs_fast_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
574 ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap, inode);
577 _INLINE_ void ext2fs_fast_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
580 ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, inode);
583 _INLINE_ int ext2fs_fast_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
586 return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
590 _INLINE_ errcode_t ext2fs_find_first_zero_block_bitmap2(ext2fs_block_bitmap bitmap,
598 rv = ext2fs_find_first_zero_generic_bmap((ext2fs_generic_bitmap) bitmap,
605 _INLINE_ errcode_t ext2fs_find_first_zero_inode_bitmap2(ext2fs_inode_bitmap bitmap,
613 rv = ext2fs_find_first_zero_generic_bmap((ext2fs_generic_bitmap) bitmap,
616 *out = (ext2_ino_t) o;
620 _INLINE_ errcode_t ext2fs_find_first_set_block_bitmap2(ext2fs_block_bitmap bitmap,
628 rv = ext2fs_find_first_set_generic_bmap((ext2fs_generic_bitmap) bitmap,
635 _INLINE_ errcode_t ext2fs_find_first_set_inode_bitmap2(ext2fs_inode_bitmap bitmap,
643 rv = ext2fs_find_first_set_generic_bmap((ext2fs_generic_bitmap) bitmap,
646 *out = (ext2_ino_t) o;
650 _INLINE_ blk64_t ext2fs_get_block_bitmap_start2(ext2fs_block_bitmap bitmap)
652 return ext2fs_get_generic_bmap_start((ext2fs_generic_bitmap) bitmap);
655 _INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_start2(ext2fs_inode_bitmap bitmap)
657 return (ext2_ino_t) ext2fs_get_generic_bmap_start((ext2fs_generic_bitmap) bitmap);
660 _INLINE_ blk64_t ext2fs_get_block_bitmap_end2(ext2fs_block_bitmap bitmap)
662 return ext2fs_get_generic_bmap_end((ext2fs_generic_bitmap) bitmap);
665 _INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_end2(ext2fs_inode_bitmap bitmap)
667 return (ext2_ino_t) ext2fs_get_generic_bmap_end((ext2fs_generic_bitmap) bitmap);
670 _INLINE_ int ext2fs_fast_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
674 return ext2fs_test_block_bitmap_range2(bitmap, block, num);
677 _INLINE_ void ext2fs_fast_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
681 ext2fs_mark_block_bitmap_range2(bitmap, block, num);
684 _INLINE_ void ext2fs_fast_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
688 ext2fs_unmark_block_bitmap_range2(bitmap, block, num);
694 #ifndef _EXT2_HAVE_ASM_BITOPS_
695 extern int ext2fs_set_bit(unsigned int nr,void * addr);
696 extern int ext2fs_clear_bit(unsigned int nr, void * addr);
697 extern int ext2fs_test_bit(unsigned int nr, const void * addr);
700 extern int ext2fs_set_bit64(__u64 nr,void * addr);
701 extern int ext2fs_clear_bit64(__u64 nr, void * addr);
702 extern int ext2fs_test_bit64(__u64 nr, const void * addr);
703 extern unsigned int ext2fs_bitcount(const void *addr, unsigned int nbytes);