blob: 5fbbbb2b8e7e060807d125945b1515735115b9f0 [file] [log] [blame]
/*
* Copyright 2000-2004 by Hans Reiser, licensing governed by
* reiserfsprogs/README
*/
#ifndef REISERFS_BITMAP_H
#define REISERFS_BITMAP_H
#include "reiserfs/types.h"
#include <stdio.h>
#define reiserfs_bmap_nr(count, blk_size) \
((count - 1) / (blk_size * 8) + 1)
#define reiserfs_bmap_over(nr) (nr > ((1ll << 16) - 1))
extern reiserfs_bitmap_t *reiserfs_bitmap_create (unsigned int bit_count);
extern int reiserfs_bitmap_open(reiserfs_filsys_t *);
extern void reiserfs_bitmap_delete (reiserfs_bitmap_t * bm);
extern void reiserfs_bitmap_free (reiserfs_filsys_t *);
extern void reiserfs_bitmap_close (reiserfs_filsys_t *);
extern int reiserfs_bitmap_flush (reiserfs_bitmap_t * bm,
reiserfs_filsys_t * fs);
extern int reiserfs_bitmap_expand (reiserfs_bitmap_t * bm,
unsigned int bit_count);
extern void reiserfs_bitmap_shrink (reiserfs_bitmap_t * bm,
unsigned int bit_count);
extern void reiserfs_bitmap_copy (reiserfs_bitmap_t * to,
reiserfs_bitmap_t * from);
extern int reiserfs_bitmap_compare (reiserfs_bitmap_t * bm1,
reiserfs_bitmap_t * bm2);
extern void reiserfs_bitmap_disjunction (reiserfs_bitmap_t * disk,
reiserfs_bitmap_t * cont);
extern void reiserfs_bitmap_delta (reiserfs_bitmap_t * base,
reiserfs_bitmap_t * exclude);
extern void reiserfs_bitmap_set_bit (reiserfs_bitmap_t * bm,
unsigned int bit_number);
extern void reiserfs_bitmap_clear_bit (reiserfs_bitmap_t * bm,
unsigned int bit_number);
extern int reiserfs_bitmap_test_bit (reiserfs_bitmap_t * bm,
unsigned int bit_number);
extern int reiserfs_bitmap_find_zero_bit (reiserfs_bitmap_t * bm,
unsigned long * start);
extern void reiserfs_bitmap_zero (reiserfs_bitmap_t * bm);
extern void reiserfs_bitmap_fill (reiserfs_bitmap_t * bm);
extern void reiserfs_bitmap_invert (reiserfs_bitmap_t * bm);
extern unsigned int reiserfs_bitmap_ones (reiserfs_bitmap_t * bm);
extern unsigned int reiserfs_bitmap_zeros (reiserfs_bitmap_t * bm);
extern int reiserfs_bitmap_spread (reiserfs_filsys_t *);
extern int reiserfs_bitmap_block (reiserfs_filsys_t *,
unsigned long block);
/* Backup copies. */
extern void reiserfs_bitmap_save (FILE * fp,
reiserfs_bitmap_t *bm);
extern reiserfs_bitmap_t * reiserfs_bitmap_load (FILE * fp);
extern void reiserfs_bitmap_print (FILE * fp, reiserfs_filsys_t * fs,
int silent);
extern void reiserfs_print_bmap_block (FILE * fp, int i,
unsigned long block,
char * map, int blocks,
int silent, int blocksize);
#endif