mirror of https://gitee.com/openkylin/linux.git
netdevice.h: Add netdev_printk helpers like dev_printk
These netdev_printk routines take a struct net_device * and emit dev_printk logging messages adding "%s: " ... netdev->dev.parent to the dev_printk format and arguments. This can create some uniformity in the output message log. These helpers should not be used until a successful alloc_netdev. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
21809fafa0
commit
571ba42303
|
@ -2095,6 +2095,77 @@ static inline u32 dev_ethtool_get_flags(struct net_device *dev)
|
||||||
return 0;
|
return 0;
|
||||||
return dev->ethtool_ops->get_flags(dev);
|
return dev->ethtool_ops->get_flags(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Logging, debugging and troubleshooting/diagnostic helpers. */
|
||||||
|
|
||||||
|
/* netdev_printk helpers, similar to dev_printk */
|
||||||
|
|
||||||
|
static inline const char *netdev_name(const struct net_device *dev)
|
||||||
|
{
|
||||||
|
if (dev->reg_state != NETREG_REGISTERED)
|
||||||
|
return "(unregistered net_device)";
|
||||||
|
return dev->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define netdev_printk(level, netdev, format, args...) \
|
||||||
|
dev_printk(level, (netdev)->dev.parent, \
|
||||||
|
"%s: " format, \
|
||||||
|
netdev_name(netdev), ##args)
|
||||||
|
|
||||||
|
#define netdev_emerg(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_EMERG, dev, format, ##args)
|
||||||
|
#define netdev_alert(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_ALERT, dev, format, ##args)
|
||||||
|
#define netdev_crit(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_CRIT, dev, format, ##args)
|
||||||
|
#define netdev_err(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_ERR, dev, format, ##args)
|
||||||
|
#define netdev_warn(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_WARNING, dev, format, ##args)
|
||||||
|
#define netdev_notice(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_NOTICE, dev, format, ##args)
|
||||||
|
#define netdev_info(dev, format, args...) \
|
||||||
|
netdev_printk(KERN_INFO, dev, format, ##args)
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
#define netdev_dbg(__dev, format, args...) \
|
||||||
|
netdev_printk(KERN_DEBUG, __dev, format, ##args)
|
||||||
|
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||||
|
#define netdev_dbg(__dev, format, args...) \
|
||||||
|
do { \
|
||||||
|
dynamic_dev_dbg((__dev)->dev.parent, "%s: " format, \
|
||||||
|
netdev_name(__dev), ##args); \
|
||||||
|
} while (0)
|
||||||
|
#else
|
||||||
|
#define netdev_dbg(__dev, format, args...) \
|
||||||
|
({ \
|
||||||
|
if (0) \
|
||||||
|
netdev_printk(KERN_DEBUG, __dev, format, ##args); \
|
||||||
|
0; \
|
||||||
|
})
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(VERBOSE_DEBUG)
|
||||||
|
#define netdev_vdbg netdev_dbg
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define netdev_vdbg(dev, format, args...) \
|
||||||
|
({ \
|
||||||
|
if (0) \
|
||||||
|
netdev_printk(KERN_DEBUG, dev, format, ##args); \
|
||||||
|
0; \
|
||||||
|
})
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* netdev_WARN() acts like dev_printk(), but with the key difference
|
||||||
|
* of using a WARN/WARN_ON to get the message out, including the
|
||||||
|
* file/line information and a backtrace.
|
||||||
|
*/
|
||||||
|
#define netdev_WARN(dev, format, args...) \
|
||||||
|
WARN(1, "netdevice: %s\n" format, netdev_name(dev), ##args);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
#endif /* _LINUX_NETDEVICE_H */
|
#endif /* _LINUX_NETDEVICE_H */
|
||||||
|
|
Loading…
Reference in New Issue