• Andrew Morton's avatar
    [PATCH] idr: remove counter bits from id's · 5470e17c
    Andrew Morton authored
    idr_get_new() currently returns an incrementing counter in the top 8 bits of
    the counter.  Which means that most users have to mask it off again, and we
    only have a 24-bit range.
    
    So remove that counter.  Also:
    
    - Remove the BITS_PER_INT define due to namespace collision risk.
    
    - Make MAX_ID_SHIFT 31, so counters have a 0 to 2G-1 range.
    
    - Why is MAX_ID_SHIFT using sizeof(int) and not sizeof(long)?  If it's for
      consistency across 32- and 64-bit machines, why not just make it "31"?
    
    - Does this still hold true with the counter removed?
    
    /* We can only use half the bits in the top level because there are
       only four possible bits in the top level (5 bits * 4 levels = 25
       bits, but you only use 24 bits in the id). */
    
      If not, what needs to change?
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    5470e17c
idr.c 9.97 KB