Introduce guard support to simplify the usage of the lock about rtnl. Signed-off-by: Fushuai Wang --- include/linux/rtnetlink.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index ea39dd23a197..61e727c35927 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h @@ -7,6 +7,7 @@ #include #include #include +#include #include extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo); @@ -158,6 +159,16 @@ static inline void ASSERT_RTNL_NET(struct net *net) rcu_replace_pointer_rtnl(rp, p) #endif +DEFINE_LOCK_GUARD_0(rtnl, rtnl_lock(), rtnl_unlock()) + +DEFINE_GUARD(__rtnl_net, struct net *, __rtnl_net_lock(_T), + __rtnl_net_unlock(_T)) + +DEFINE_GUARD(rtnl_net, struct net *, rtnl_net_lock(_T), + rtnl_net_unlock(_T)) +DEFINE_GUARD_COND(rtnl_net, _try, rtnl_net_trylock(_T)) +DEFINE_GUARD_COND(rtnl_net, _kill, rtnl_net_lock_killable(_T), _RET == 0) + static inline struct netdev_queue *dev_ingress_queue(struct net_device *dev) { return rtnl_dereference(dev->ingress_queue); -- 2.36.1