1 #ifndef __RTNETLINK_WRAPPER_H
2 #define __RTNETLINK_WRAPPER_H 1
4 #include_next <linux/rtnetlink.h>
6 #ifndef HAVE_LOCKDEP_RTNL_IS_HELD
7 #ifdef CONFIG_PROVE_LOCKING
8 static inline int lockdep_rtnl_is_held(void)
15 #ifndef rcu_dereference_rtnl
17 * rcu_dereference_rtnl - rcu_dereference with debug checking
18 * @p: The pointer to read, prior to dereferencing
20 * Do an rcu_dereference(p), but check caller either holds rcu_read_lock()
21 * or RTNL. Note : Please prefer rtnl_dereference() or rcu_dereference()
23 #define rcu_dereference_rtnl(p) \
24 rcu_dereference_check(p, rcu_read_lock_held() || \
25 lockdep_rtnl_is_held())
28 #ifndef rtnl_dereference
30 * rtnl_dereference - fetch RCU pointer when updates are prevented by RTNL
31 * @p: The pointer to read, prior to dereferencing
33 * Return the value of the specified RCU-protected pointer, but omit
34 * both the smp_read_barrier_depends() and the ACCESS_ONCE(), because
37 #define rtnl_dereference(p) \
38 rcu_dereference_protected(p, lockdep_rtnl_is_held())
41 #endif /* linux/rtnetlink.h wrapper */