1/* vi: set sw=4 ts=4: */ 2/* 3 * bitops.h --- Bitmap frobbing code. The byte swapping routines are 4 * also included here. 5 * 6 * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. 7 * 8 * %Begin-Header% 9 * This file may be redistributed under the terms of the GNU Public 10 * License. 11 * %End-Header% 12 * 13 * i386 bitops operations taken from <asm/bitops.h>, Copyright 1992, 14 * Linus Torvalds. 15 */ 16 17#include <string.h> 18//#include <strings.h> 19 20extern int ext2fs_set_bit(unsigned int nr,void * addr); 21extern int ext2fs_clear_bit(unsigned int nr, void * addr); 22extern int ext2fs_test_bit(unsigned int nr, const void * addr); 23extern __u16 ext2fs_swab16(__u16 val); 24extern __u32 ext2fs_swab32(__u32 val); 25 26#ifdef WORDS_BIGENDIAN 27#define ext2fs_cpu_to_le32(x) ext2fs_swab32((x)) 28#define ext2fs_le32_to_cpu(x) ext2fs_swab32((x)) 29#define ext2fs_cpu_to_le16(x) ext2fs_swab16((x)) 30#define ext2fs_le16_to_cpu(x) ext2fs_swab16((x)) 31#define ext2fs_cpu_to_be32(x) ((__u32)(x)) 32#define ext2fs_be32_to_cpu(x) ((__u32)(x)) 33#define ext2fs_cpu_to_be16(x) ((__u16)(x)) 34#define ext2fs_be16_to_cpu(x) ((__u16)(x)) 35#else 36#define ext2fs_cpu_to_le32(x) ((__u32)(x)) 37#define ext2fs_le32_to_cpu(x) ((__u32)(x)) 38#define ext2fs_cpu_to_le16(x) ((__u16)(x)) 39#define ext2fs_le16_to_cpu(x) ((__u16)(x)) 40#define ext2fs_cpu_to_be32(x) ext2fs_swab32((x)) 41#define ext2fs_be32_to_cpu(x) ext2fs_swab32((x)) 42#define ext2fs_cpu_to_be16(x) ext2fs_swab16((x)) 43#define ext2fs_be16_to_cpu(x) ext2fs_swab16((x)) 44#endif 45 46/* 47 * EXT2FS bitmap manipulation routines. 48 */ 49 50/* Support for sending warning messages from the inline subroutines */ 51extern const char *ext2fs_block_string; 52extern const char *ext2fs_inode_string; 53extern const char *ext2fs_mark_string; 54extern const char *ext2fs_unmark_string; 55extern const char *ext2fs_test_string; 56extern void ext2fs_warn_bitmap(errcode_t errcode, unsigned long arg, 57 const char *description); 58extern void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap, 59 int code, unsigned long arg); 60 61extern int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block); 62extern int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap, 63 blk_t block); 64extern int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block); 65 66extern int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode); 67extern int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap, 68 ext2_ino_t inode); 69extern int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode); 70 71extern void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap, 72 blk_t block); 73extern void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap, 74 blk_t block); 75extern int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap, 76 blk_t block); 77 78extern void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap, 79 ext2_ino_t inode); 80extern void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap, 81 ext2_ino_t inode); 82extern int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap, 83 ext2_ino_t inode); 84extern blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap); 85extern ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap); 86extern blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap); 87extern ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap); 88 89extern void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap, 90 blk_t block, int num); 91extern void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap, 92 blk_t block, int num); 93extern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap, 94 blk_t block, int num); 95extern void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap, 96 blk_t block, int num); 97extern void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap, 98 blk_t block, int num); 99extern int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap, 100 blk_t block, int num); 101extern void ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map); 102 103/* These two routines moved to gen_bitmap.c */ 104extern int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap, 105 __u32 bitno); 106extern int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap, 107 blk_t bitno); 108