diff options
Diffstat (limited to 'include/linux/rbtree_augmented.h')
| -rw-r--r-- | include/linux/rbtree_augmented.h | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h index 14d7b831b63a..d076183e49be 100644 --- a/include/linux/rbtree_augmented.h +++ b/include/linux/rbtree_augmented.h @@ -130,6 +130,19 @@ __rb_change_child(struct rb_node *old, struct rb_node *new,  		WRITE_ONCE(root->rb_node, new);  } +static inline void +__rb_change_child_rcu(struct rb_node *old, struct rb_node *new, +		      struct rb_node *parent, struct rb_root *root) +{ +	if (parent) { +		if (parent->rb_left == old) +			rcu_assign_pointer(parent->rb_left, new); +		else +			rcu_assign_pointer(parent->rb_right, new); +	} else +		rcu_assign_pointer(root->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)); |