]> git.ozlabs.org Git - ccan/commitdiff
Neaten definitions a little.
authorRusty Russell <rusty@vivaldi>
Sun, 18 May 2008 03:00:17 +0000 (13:00 +1000)
committerRusty Russell <rusty@vivaldi>
Sun, 18 May 2008 03:00:17 +0000 (13:00 +1000)
alloc/alloc.c

index 6cab20fc2a8e25a11faa56c5e98cf591aa44b99d..cc1b845b550ef61dfba54c045550ea775846ff65 100644 (file)
@@ -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;