• Peter Zijlstra's avatar
    rbtree: Add generic add and find helpers · 2d24dd57
    Peter Zijlstra authored
    I've always been bothered by the endless (fragile) boilerplate for
    rbtree, and I recently wrote some rbtree helpers for objtool and
    figured I should lift them into the kernel and use them more widely.
    
    Provide:
    
    partial-order; less() based:
     - rb_add(): add a new entry to the rbtree
     - rb_add_cached(): like rb_add(), but for a rb_root_cached
    
    total-order; cmp() based:
     - rb_find(): find an entry in an rbtree
     - rb_find_add(): find an entry, and add if not found
    
     - rb_find_first(): find the first (leftmost) matching entry
     - rb_next_match(): continue from rb_find_first()
     - rb_for_each(): iterate a sub-tree using the previous two
    
    Inlining and constant propagation should see the compiler inline the
    whole thing, including the various compare functions.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Reviewed-by: default avatarMichel Lespinasse <walken@google.com>
    Acked-by: default avatarDavidlohr Bueso <dbueso@suse.de>
    2d24dd57
elf.c 21.3 KB