diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2015-12-23 23:36:43 +0100 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2017-08-02 20:09:45 -0400 |
commit | 1ea0fd34d243f6fc512e617878b53957ac30f5c9 (patch) | |
tree | 5e3bda34295dd2b9bf03f01a70aca68a92578662 | |
parent | e22b89e2a03d787f8bd32c2889dff133c35a7b83 (diff) | |
download | linux-rt-1ea0fd34d243f6fc512e617878b53957ac30f5c9.tar.gz |
rbtree: don't include the rcu header
The RCU header pulls in spinlock.h and fails due not yet defined types:
|In file included from include/linux/spinlock.h:275:0,
| from include/linux/rcupdate.h:38,
| from include/linux/rbtree.h:34,
| from include/linux/rtmutex.h:17,
| from include/linux/spinlock_types.h:18,
| from kernel/bounds.c:13:
|include/linux/rwlock_rt.h:16:38: error: unknown type name ‘rwlock_t’
| extern void __lockfunc rt_write_lock(rwlock_t *rwlock);
| ^
This patch moves the only RCU user from the header file into c file so the
inclusion can be avoided.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r-- | include/linux/rbtree.h | 11 | ||||
-rw-r--r-- | lib/rbtree.c | 11 |
2 files changed, 13 insertions, 9 deletions
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h index a5aa7ae671f4..24ddffd25492 100644 --- a/include/linux/rbtree.h +++ b/include/linux/rbtree.h @@ -31,7 +31,6 @@ #include <linux/kernel.h> #include <linux/stddef.h> -#include <linux/rcupdate.h> struct rb_node { unsigned long __rb_parent_color; @@ -86,14 +85,8 @@ static inline void rb_link_node(struct rb_node *node, struct rb_node *parent, *rb_link = node; } -static inline void rb_link_node_rcu(struct rb_node *node, struct rb_node *parent, - struct rb_node **rb_link) -{ - node->__rb_parent_color = (unsigned long)parent; - node->rb_left = node->rb_right = NULL; - - rcu_assign_pointer(*rb_link, node); -} +void rb_link_node_rcu(struct rb_node *node, struct rb_node *parent, + struct rb_node **rb_link); #define rb_entry_safe(ptr, type, member) \ ({ typeof(ptr) ____ptr = (ptr); \ diff --git a/lib/rbtree.c b/lib/rbtree.c index 1356454e36de..d15d6c4327f1 100644 --- a/lib/rbtree.c +++ b/lib/rbtree.c @@ -23,6 +23,7 @@ #include <linux/rbtree_augmented.h> #include <linux/export.h> +#include <linux/rcupdate.h> /* * red-black trees properties: http://en.wikipedia.org/wiki/Rbtree @@ -590,3 +591,13 @@ struct rb_node *rb_first_postorder(const struct rb_root *root) return rb_left_deepest_node(root->rb_node); } EXPORT_SYMBOL(rb_first_postorder); + +void rb_link_node_rcu(struct rb_node *node, struct rb_node *parent, + struct rb_node **rb_link) +{ + node->__rb_parent_color = (unsigned long)parent; + node->rb_left = node->rb_right = NULL; + + rcu_assign_pointer(*rb_link, node); +} +EXPORT_SYMBOL(rb_link_node_rcu); |