From 76dd186eee6ae0bea37e840de0b3199d4723b3d1 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 11 Jul 2018 12:25:43 -0600 Subject: [PATCH] axmap: code cleanups - Move the const bit masks to the start of the file - Get rid of a useless variable in axmap_handler_topdown() Signed-off-by: Jens Axboe --- lib/axmap.c | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/lib/axmap.c b/lib/axmap.c index 2a9463dc..4dbef31c 100644 --- a/lib/axmap.c +++ b/lib/axmap.c @@ -37,6 +37,28 @@ #define firstfree_valid(b) ((b)->first_free != (uint64_t) -1) +static const unsigned long bit_masks[] = { + 0x0000000000000000, 0x0000000000000001, 0x0000000000000003, 0x0000000000000007, + 0x000000000000000f, 0x000000000000001f, 0x000000000000003f, 0x000000000000007f, + 0x00000000000000ff, 0x00000000000001ff, 0x00000000000003ff, 0x00000000000007ff, + 0x0000000000000fff, 0x0000000000001fff, 0x0000000000003fff, 0x0000000000007fff, + 0x000000000000ffff, 0x000000000001ffff, 0x000000000003ffff, 0x000000000007ffff, + 0x00000000000fffff, 0x00000000001fffff, 0x00000000003fffff, 0x00000000007fffff, + 0x0000000000ffffff, 0x0000000001ffffff, 0x0000000003ffffff, 0x0000000007ffffff, + 0x000000000fffffff, 0x000000001fffffff, 0x000000003fffffff, 0x000000007fffffff, + 0x00000000ffffffff, +#if BITS_PER_LONG == 64 + 0x00000001ffffffff, 0x00000003ffffffff, 0x00000007ffffffff, 0x0000000fffffffff, + 0x0000001fffffffff, 0x0000003fffffffff, 0x0000007fffffffff, 0x000000ffffffffff, + 0x000001ffffffffff, 0x000003ffffffffff, 0x000007ffffffffff, 0x00000fffffffffff, + 0x00001fffffffffff, 0x00003fffffffffff, 0x00007fffffffffff, 0x0000ffffffffffff, + 0x0001ffffffffffff, 0x0003ffffffffffff, 0x0007ffffffffffff, 0x000fffffffffffff, + 0x001fffffffffffff, 0x003fffffffffffff, 0x007fffffffffffff, 0x00ffffffffffffff, + 0x01ffffffffffffff, 0x03ffffffffffffff, 0x07ffffffffffffff, 0x0fffffffffffffff, + 0x1fffffffffffffff, 0x3fffffffffffffff, 0x7fffffffffffffff, 0xffffffffffffffff +#endif +}; + struct axmap_level { int level; unsigned long map_size; @@ -50,7 +72,7 @@ struct axmap { uint64_t nr_bits; }; -static unsigned long ulog64(unsigned long val, unsigned int log) +static inline unsigned long ulog64(unsigned long val, unsigned int log) { while (log-- && val) val >>= UNIT_SHIFT; @@ -155,10 +177,10 @@ static bool axmap_handler_topdown(struct axmap *axmap, uint64_t bit_nr, void *data) { struct axmap_level *al; - int i, level = axmap->nr_levels; + int i; for (i = axmap->nr_levels - 1; i >= 0; i--) { - unsigned long index = ulog64(bit_nr, --level); + unsigned long index = ulog64(bit_nr, i); unsigned long offset = index >> UNIT_SHIFT; unsigned int bit = index & BLOCKS_PER_UNIT_MASK; @@ -194,28 +216,6 @@ struct axmap_set_data { unsigned int set_bits; }; -static const unsigned long bit_masks[] = { - 0x0000000000000000, 0x0000000000000001, 0x0000000000000003, 0x0000000000000007, - 0x000000000000000f, 0x000000000000001f, 0x000000000000003f, 0x000000000000007f, - 0x00000000000000ff, 0x00000000000001ff, 0x00000000000003ff, 0x00000000000007ff, - 0x0000000000000fff, 0x0000000000001fff, 0x0000000000003fff, 0x0000000000007fff, - 0x000000000000ffff, 0x000000000001ffff, 0x000000000003ffff, 0x000000000007ffff, - 0x00000000000fffff, 0x00000000001fffff, 0x00000000003fffff, 0x00000000007fffff, - 0x0000000000ffffff, 0x0000000001ffffff, 0x0000000003ffffff, 0x0000000007ffffff, - 0x000000000fffffff, 0x000000001fffffff, 0x000000003fffffff, 0x000000007fffffff, - 0x00000000ffffffff, -#if BITS_PER_LONG == 64 - 0x00000001ffffffff, 0x00000003ffffffff, 0x00000007ffffffff, 0x0000000fffffffff, - 0x0000001fffffffff, 0x0000003fffffffff, 0x0000007fffffffff, 0x000000ffffffffff, - 0x000001ffffffffff, 0x000003ffffffffff, 0x000007ffffffffff, 0x00000fffffffffff, - 0x00001fffffffffff, 0x00003fffffffffff, 0x00007fffffffffff, 0x0000ffffffffffff, - 0x0001ffffffffffff, 0x0003ffffffffffff, 0x0007ffffffffffff, 0x000fffffffffffff, - 0x001fffffffffffff, 0x003fffffffffffff, 0x007fffffffffffff, 0x00ffffffffffffff, - 0x01ffffffffffffff, 0x03ffffffffffffff, 0x07ffffffffffffff, 0x0fffffffffffffff, - 0x1fffffffffffffff, 0x3fffffffffffffff, 0x7fffffffffffffff, 0xffffffffffffffff -#endif -}; - static bool axmap_set_fn(struct axmap_level *al, unsigned long offset, unsigned int bit, void *__data) { -- 2.25.1