コード例 #1
0
ファイル: bitmap.c プロジェクト: gtowne/CS552-ramdisk
int bitmap_removeblockofsize	(int index, int size, struct Bitmap* bitmap)
{
    int start;
    int count;

    start = index;
    count = 0;

    while (1==1)
    {
        // Handle wrap around case
        if (index == TOTAL_BLOCKS - 1)
        {
            index = 0;
        }

        bitmap_removeatindex(index, bitmap);

        if (count == size)
        {
            PRINT("Bitmap:: setblockofsize: Set block of size: %d at index: %d\n", size, start);
            bitmap->num_empty += size;
            return 0;
        }
        count ++;
        index ++;
    }

    return -1;
}
コード例 #2
0
int main()
{
	struct Bitmap bitmap;

	bitmap_initialize(&bitmap);
	bitmap_setatindex(-1, &bitmap);
	bitmap_setatindex(7, &bitmap);
	bitmap_setatindex(7, &bitmap);
	bitmap_removeatindex(7, &bitmap);
	bitmap_setatindex(7, &bitmap);

	int block_size = 400;
	int index = bitmap_findemptyblockofsize(block_size, &bitmap);
	bitmap_setblockofsize(block_size, &bitmap);
	_bitmap_print_raw(&bitmap);

	bitmap_removeblockofsize(index, block_size, &bitmap);
	_bitmap_print_raw(&bitmap);
	
	return 0;
}