14 Oct, 2014

1 commit


12 Jan, 2013

1 commit

  • lib/rbtree.c declared __rb_erase_color() as __always_inline void, and
    then exported it with EXPORT_SYMBOL.

    This was because __rb_erase_color() must be exported for augmented
    rbtree users, but it must also be inlined into rb_erase() so that the
    dummy callback can get optimized out of that call site.

    (Actually with a modern compiler, none of the dummy callback functions
    should even be generated as separate text functions).

    The above usage is legal C, but it was unusual enough for some compilers
    to warn about it. This change makes things more explicit, with a static
    __always_inline ____rb_erase_color function for use in rb_erase(), and a
    separate non-inline __rb_erase_color function for use in
    rb_erase_augmented call sites.

    Signed-off-by: Michel Lespinasse
    Reported-by: Wu Fengguang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     

26 Oct, 2012

1 commit

  • rb_erase_augmented() is a static function annotated with
    __always_inline. This causes a compile failure when attempting to use
    the rbtree implementation as a library (e.g. kvm tool):

    rbtree_augmented.h:125:24: error: expected `=', `,', `;', `asm' or `__attribute__' before `void'

    Include linux/compiler.h in rbtree_augmented.h so that the __always_inline
    macro is resolved correctly.

    Signed-off-by: Will Deacon
    Cc: Pekka Enberg
    Reviewed-by: Michel Lespinasse
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Deacon
     

09 Oct, 2012

1 commit

  • Provide rb_insert_augmented() and rb_erase_augmented() through a new
    rbtree_augmented.h include file. rb_erase_augmented() is defined there as
    an __always_inline function, in order to allow inlining of augmented
    rbtree callbacks into it. Since this generates a relatively large
    function, each augmented rbtree user should make sure to have a single
    call site.

    Signed-off-by: Michel Lespinasse
    Cc: Rik van Riel
    Cc: Hillf Danton
    Cc: Peter Zijlstra
    Cc: Catalin Marinas
    Cc: Andrea Arcangeli
    Cc: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse