blob: 08a3de62e846d3d322b7b21b3c4d89acd47662e9 [file] [log] [blame]
/* ============================================================
* Copyright (c) 2014 Actifio Inc. All Rights Reserved
*/
#ifndef _BITMAP_H_
#define _BITMAP_H_
#include "fc_bitmap.h"
#define LBAS_SIZE 512
typedef struct ram_bitmap {
fc_bitmap_hdr_t bmhdr;
fc_bitmap_mq_hdr_t mqhdr;
unsigned char bits[1];
} ram_bitmap_t;
extern ram_bitmap_t *bitmap_create(uint64_t volsize, unsigned int grainsize);
extern ram_bitmap_t *bitmap_dup(ram_bitmap_t *bitmap);
extern ram_bitmap_t *bitmap_read(const char * bitmap);
extern void bitmap_destroy(ram_bitmap_t *bitmap);
extern void bitmap_addbit(ram_bitmap_t *diff_bitmap, uint64_t rangeaddr, uint64_t rangesize);
extern void bitmap_write(ram_bitmap_t *diff_bitmap, const char * bitmap);
extern int bitmap_add(ram_bitmap_t *result, ram_bitmap_t *lhs, ram_bitmap_t *rhs);
extern int bitmap_subtract(ram_bitmap_t *result, ram_bitmap_t *lhs, ram_bitmap_t *rhs);
extern int bitmap_compare(ram_bitmap_t *, ram_bitmap_t *);
extern uint64_t bitmap_get_bitcount(ram_bitmap_t *);
extern int bitmap_get_bit(ram_bitmap_t *, uint64_t byte_offset);
extern char *bitmap_show_bits(char *string, const char bits);
extern void bitmap_show(ram_bitmap_t *bitmap, uint64_t byte_offset);
extern void holemap_write(ram_bitmap_t *diff_bitmap, const char * bitmap);
typedef struct {
ram_bitmap_t *diff_bitmap;
ram_bitmap_t *free_bitmap;
} ram_bitmap_pair_t;
extern ram_bitmap_pair_t *bitmap_pair_create(uint64_t, unsigned int);
extern void bitmap_pair_destroy(ram_bitmap_pair_t *);
#endif