Ejemplo n.º 1
0
int bitmap_block_alloc(size_t * start, size_t len, bitmap_t * bitmap,
                       size_t size)
{
    int retval;

    retval = bitmap_block_search(start, len, bitmap, size);
    if (retval == 0) {
        bitmap_block_update(bitmap, 1, *start, len);
    }

    return retval;
}
Ejemplo n.º 2
0
static int get_iblocks(size_t * iblock, size_t pcount,
                       struct vregion ** vreg_ret)
{
    struct vregion * vreg = last_vreg;

retry_vra:
    do {
        if (bitmap_block_search(iblock, pcount, vreg->map, vreg->size) == 0)
            break; /* Found block */
    } while ((vreg = vreg->node.next));

    if (!vreg) { /* Not found */
        vreg = vreg_alloc_node(pcount);
        if (!vreg)
            return -ENOMEM;
        goto retry_vra;
    }

    bitmap_block_update(vreg->map, 1, *iblock, pcount);
    *vreg_ret = vreg;

    return 0;
}