| /* ============================================================ |
| * 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 |