summaryrefslogtreecommitdiffstats
path: root/include/linux/rbtree_augmented.h
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2013-01-21 17:46:16 +0900
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-01-21 17:46:16 +0900
commit69485d3e6d6839b46a56c77d2dffad18cb7d373f (patch)
tree20e9de1d5fd9f6617b05e759f9326eaffaf743ee /include/linux/rbtree_augmented.h
parentf2a93e2a4c048dfb5c7ee3f159a4a1d1cb61b4b5 (diff)
parent7881fd0fb3ecc9e367ba998a4de533e7eecbdfeb (diff)
Merge remote-tracking branch 'asoc/fix/adsp' into asoc-adsp
Diffstat (limited to 'include/linux/rbtree_augmented.h')
-rw-r--r--include/linux/rbtree_augmented.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h
index 2ac60c9cf64..fea49b5da12 100644
--- a/include/linux/rbtree_augmented.h
+++ b/include/linux/rbtree_augmented.h
@@ -123,9 +123,9 @@ __rb_change_child(struct rb_node *old, struct rb_node *new,
extern void __rb_erase_color(struct rb_node *parent, struct rb_root *root,
void (*augment_rotate)(struct rb_node *old, struct rb_node *new));
-static __always_inline void
-rb_erase_augmented(struct rb_node *node, struct rb_root *root,
- const struct rb_augment_callbacks *augment)
+static __always_inline struct rb_node *
+__rb_erase_augmented(struct rb_node *node, struct rb_root *root,
+ const struct rb_augment_callbacks *augment)
{
struct rb_node *child = node->rb_right, *tmp = node->rb_left;
struct rb_node *parent, *rebalance;
@@ -217,6 +217,14 @@ rb_erase_augmented(struct rb_node *node, struct rb_root *root,
}
augment->propagate(tmp, NULL);
+ return rebalance;
+}
+
+static __always_inline void
+rb_erase_augmented(struct rb_node *node, struct rb_root *root,
+ const struct rb_augment_callbacks *augment)
+{
+ struct rb_node *rebalance = __rb_erase_augmented(node, root, augment);
if (rebalance)
__rb_erase_color(rebalance, root, augment->rotate);
}