From b4be5752984b63622a71bda0c8b297f7d75e0339 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sun, 18 May 2008 13:00:17 +1000 Subject: [PATCH] Neaten definitions a little. --- alloc/alloc.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/alloc/alloc.c b/alloc/alloc.c index 6cab20fc..cc1b845b 100644 --- a/alloc/alloc.c +++ b/alloc/alloc.c @@ -102,6 +102,9 @@ enum sub_metadata_type /* Page states are represented by bitpairs, at the start of the pool. */ #define BITS_PER_PAGE 2 +/* How much metadata info per byte? */ +#define METADATA_PER_BYTE (CHAR_BIT / 2) + static uint8_t *get_page_statebits(const void *pool) { return (uint8_t *)pool + sizeof(struct uniform_cache); @@ -291,7 +294,7 @@ static unsigned int uniform_metalen(unsigned int usize) /* Two bits for the header, 14 bits for size, then one bit for each * element the page can hold. Round up to number of bytes. */ - metalen = div_up(2*CHAR_BIT + SUBPAGE_METAOFF / usize, CHAR_BIT); + metalen = div_up(2 + 14 + SUBPAGE_METAOFF / usize, CHAR_BIT); /* To ensure metaheader is always aligned, round bytes up. */ metalen = align_up(metalen, ALIGNOF(struct metaheader)); @@ -320,27 +323,26 @@ static uint8_t *alloc_metaspace(void *pool, unsigned long poolsize, metalen = get_metalen(pool, poolsize, mh); /* Walk through metadata looking for free. */ - for (i = 0; i < metalen * CHAR_BIT / BITS_PER_PAGE; i += len) { + for (i = 0; i < metalen * METADATA_PER_BYTE; i += len) { switch (get_bit_pair(meta, i)) { case FREE: len = 1; free++; - if (free == bytes * CHAR_BIT / BITS_PER_PAGE) { + if (free == bytes * METADATA_PER_BYTE) { /* Mark this as a bitmap. */ set_bit_pair(meta, i - free + 1, type); - return meta + (i - free + 1) - / (CHAR_BIT / BITS_PER_PAGE); + return meta + (i - free + 1)/METADATA_PER_BYTE; } break; case BITMAP: /* Skip over this allocated part. */ - len = BITMAP_METALEN * CHAR_BIT / BITS_PER_PAGE; + len = BITMAP_METALEN * METADATA_PER_BYTE; free = 0; break; case UNIFORM: /* Figure metalen given usize. */ - len = decode_usize(meta + i * BITS_PER_PAGE / CHAR_BIT); - len = uniform_metalen(len) * CHAR_BIT / BITS_PER_PAGE; + len = decode_usize(meta + i / METADATA_PER_BYTE); + len = uniform_metalen(len) * METADATA_PER_BYTE; free = 0; break; default: @@ -1043,7 +1045,7 @@ void alloc_visualize(FILE *out, void *pool, unsigned long poolsize) metalen = get_metalen(pool, poolsize, mh); metadata_pages += (sizeof(*mh) + metalen) / getpagesize(); - for (i = 0; i < metalen * CHAR_BIT / BITS_PER_PAGE; i += len) { + for (i = 0; i < metalen * METADATA_PER_BYTE; i += len) { switch (get_bit_pair(meta, i)) { case FREE: len = 1; @@ -1057,8 +1059,8 @@ void alloc_visualize(FILE *out, void *pool, unsigned long poolsize) break; case UNIFORM: /* Skip over this part. */ - len = decode_usize(meta + i * BITS_PER_PAGE / CHAR_BIT); - len = uniform_metalen(len) * CHAR_BIT / BITS_PER_PAGE; + len = decode_usize(meta + i/METADATA_PER_BYTE); + len = uniform_metalen(len) * METADATA_PER_BYTE; uniformblocks++; uniformlen += len; break; -- 2.39.2