X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fidtree%2Fidtree.c;h=e10c17239cdfc407e40da7c77dfb4e5f57edc42a;hb=4c1266e86aa8accb64ce116887e9ce2ec66dd798;hp=e8873926a79c07a21b7b843f06b3b4cfaa7078c9;hpb=3e44cbb718d3b315fea131106f6ccc6feb11ccc0;p=ccan diff --git a/ccan/idtree/idtree.c b/ccan/idtree/idtree.c index e8873926..e10c1723 100644 --- a/ccan/idtree/idtree.c +++ b/ccan/idtree/idtree.c @@ -42,9 +42,9 @@ #define MAX_LEVEL (MAX_ID_SHIFT + IDTREE_BITS - 1) / IDTREE_BITS #define IDTREE_FREE_MAX MAX_LEVEL + MAX_LEVEL -#define set_bit(bit, v) (v) |= (1<<(bit)) -#define clear_bit(bit, v) (v) &= ~(1<<(bit)) -#define test_bit(bit, v) ((v) & (1<<(bit))) +#define set_bit(bit, v) (v) |= (1U<<(bit)) +#define clear_bit(bit, v) (v) &= ~(1U<<(bit)) +#define test_bit(bit, v) ((v) & (1U<<(bit))) struct idtree_layer { uint32_t bitmap; @@ -100,7 +100,8 @@ static int sub_alloc(struct idtree *idp, const void *ptr, int *starting_id) int n, m, sh; struct idtree_layer *p, *pn; struct idtree_layer *pa[MAX_LEVEL+1]; - unsigned int l, id, oid; + unsigned int l; + int id, oid; uint32_t bm; memset(pa, 0, sizeof(pa)); @@ -121,7 +122,7 @@ restart: /* no space available go back to previous layer. */ l++; oid = id; - id = (id | ((1 << (IDTREE_BITS*l))-1)) + 1; + id = (id | ((1U << (IDTREE_BITS*l))-1)) + 1; /* if already at the top layer, we need to grow */ if (!(p = pa[l])) { @@ -134,7 +135,7 @@ restart: */ sh = IDTREE_BITS * (l + 1); if (oid >> sh == id >> sh) - continue; + continue; else goto restart; } @@ -277,7 +278,7 @@ void *idtree_lookup(const struct idtree *idp, int id) * present. If so, tain't one of ours! */ if (n + IDTREE_BITS < 31 && - (id & ~(~0 << MAX_ID_SHIFT)) >> (n + IDTREE_BITS)) + (id & ~(~0U << MAX_ID_SHIFT)) >> (n + IDTREE_BITS)) return NULL; /* Mask off upper bits we don't use for the search. */