Browse Source

Neaten definitions a little.

Rusty Russell 17 years ago
parent
commit
b4be575298
1 changed files with 13 additions and 11 deletions
  1. 13 11
      alloc/alloc.c

+ 13 - 11
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;