alist_blk_t
alist_blk_t bfree;
alist_blk_t blk = alist_alloc(bl, da, count);
static alist_blk_t alst_leaf_alloc(almeta_t *scan, alist_blk_t blk,
alist_blk_t start, alist_blk_t count);
static alist_blk_t alst_meta_alloc(alist_t bl, almeta_t *scan, alist_blk_t blk,
alist_blk_t start, alist_blk_t count,
alist_blk_t radix, alist_blk_t skip);
static void alst_leaf_free(almeta_t *scan, alist_blk_t relblk,
alist_blk_t count);
static void alst_meta_free(alist_t bl, almeta_t *scan, alist_blk_t freeBlk,
alist_blk_t count, alist_blk_t radix,
alist_blk_t skip, alist_blk_t blk);
static alist_blk_t alst_radix_init(almeta_t *scan, alist_blk_t blk,
alist_blk_t radix, alist_blk_t skip,
alist_blk_t count);
static void alst_radix_print(alist_t bl, almeta_t *scan, alist_blk_t blk,
alist_blk_t radix, alist_blk_t skip,
alist_create(alist_blk_t blocks, struct malloc_type *mtype)
alist_blk_t radix;
alist_blk_t skip = 0;
alist_init(alist_t bl, alist_blk_t blocks,
almeta_t *records, alist_blk_t nrecords)
alist_blk_t radix;
alist_blk_t skip = 0;
alist_blk_t
alist_alloc(alist_t bl, alist_blk_t start, alist_blk_t count)
alist_blk_t blk = ALIST_BLOCK_NONE;
alist_blk_t ncount = (count < 256) ? 1 : 256;
alist_free(alist_t bl, alist_blk_t blkno, alist_blk_t count)
alist_blk_t
alist_free_info(alist_t bl, alist_blk_t *startp, alist_blk_t *countp)
alist_blk_t radix = bl->bl_radix;
alist_blk_t skip = bl->bl_skip;
alist_blk_t next_skip;
alist_blk_t i;
static alist_blk_t
alst_leaf_alloc(almeta_t *scan, alist_blk_t blk, alist_blk_t start,
alist_blk_t count)
alist_blk_t j = ALIST_BMAP_RADIX/2;
alist_blk_t r = 0;
alist_blk_t j;
alist_blk_t n = ALIST_BMAP_RADIX - count;
static alist_blk_t
alst_meta_alloc(alist_t bl, almeta_t *scan, alist_blk_t blk, alist_blk_t start,
alist_blk_t count, alist_blk_t radix, alist_blk_t skip)
alist_blk_t i;
alist_blk_t next_skip = ((u_int)skip / ALIST_META_RADIX);
alist_blk_t orig_blk;
alist_blk_t n = count / radix * 2; /* number of bits */
alist_blk_t j;
if (scan[i].bm_bighint == (alist_blk_t)-1)
alist_blk_t r;
alst_leaf_free(almeta_t *scan, alist_blk_t blk, alist_blk_t count)
alist_blk_t n = blk & (ALIST_BMAP_RADIX - 1);
alst_meta_free(alist_t bl, almeta_t *scan, alist_blk_t freeBlk,
alist_blk_t count,
alist_blk_t radix, alist_blk_t skip, alist_blk_t blk)
alist_blk_t next_skip = ((u_int)skip / ALIST_META_RADIX);
alist_blk_t i;
alist_blk_t v;
if (scan->bm_bighint == (alist_blk_t)-1)
static alist_blk_t
alst_radix_init(almeta_t *scan, alist_blk_t blk, alist_blk_t radix,
alist_blk_t skip, alist_blk_t count)
alist_blk_t i;
alist_blk_t next_skip;
alist_blk_t memindex;
scan[i].bm_bighint = (alist_blk_t)-1;
alst_radix_print(alist_t bl, almeta_t *scan, alist_blk_t blk, alist_blk_t radix,
alist_blk_t skip, int tab)
alist_blk_t i;
alist_blk_t next_skip;
if (scan[i].bm_bighint == (alist_blk_t)-1) {
alist_blk_t size = 1024;
alist_blk_t da = 0;
alist_blk_t count = 0;
alist_t alist_create(alist_blk_t, struct malloc_type *);
void alist_init(alist_t, alist_blk_t, almeta_t *, alist_blk_t);
alist_blk_t alist_alloc(alist_t, alist_blk_t, alist_blk_t);
void alist_free(alist_t, alist_blk_t, alist_blk_t);
alist_blk_t alist_free_info(alist_t, alist_blk_t *, alist_blk_t *);
alist_blk_t bm_bighint; /* biggest contiguous block hint*/
alist_blk_t bl_blocks; /* area of coverage */
alist_blk_t bl_radix; /* coverage radix */
alist_blk_t bl_skip; /* starting skip */
alist_blk_t bl_free; /* number of free blocks */
alist_blk_t bl_rootblks; /* #blocks handled by tree */
#define ALIST_BLOCK_NONE ((alist_blk_t)-1)
alist_blk_t blk;
alist_blk_t count;
alist_blk_t bfree;
alist_blk_t blk;
alist_blk_t blk;
alist_blk_t rblk;
alist_blk_t count;
alist_blk_t xcount;
alist_blk_t bfree;