aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/core.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 9b9d3bd54e3a..f8e72724dd4b 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1819,3 +1819,67 @@ void device_shutdown(void)
1819 spin_unlock(&devices_kset->list_lock); 1819 spin_unlock(&devices_kset->list_lock);
1820 async_synchronize_full(); 1820 async_synchronize_full();
1821} 1821}
1822
1823/*
1824 * Device logging functions
1825 */
1826
1827#ifdef CONFIG_PRINTK
1828
1829static int __dev_printk(const char *level, const struct device *dev,
1830 struct va_format *vaf)
1831{
1832 if (!dev)
1833 return printk("%s(NULL device *): %pV", level, vaf);
1834
1835 return printk("%s%s %s: %pV",
1836 level, dev_driver_string(dev), dev_name(dev), vaf);
1837}
1838
1839int dev_printk(const char *level, const struct device *dev,
1840 const char *fmt, ...)
1841{
1842 struct va_format vaf;
1843 va_list args;
1844 int r;
1845
1846 va_start(args, fmt);
1847
1848 vaf.fmt = fmt;
1849 vaf.va = &args;
1850
1851 r = __dev_printk(level, dev, &vaf);
1852 va_end(args);
1853
1854 return r;
1855}
1856EXPORT_SYMBOL(dev_printk);
1857
1858#define define_dev_printk_level(func, kern_level) \
1859int func(const struct device *dev, const char *fmt, ...) \
1860{ \
1861 struct va_format vaf; \
1862 va_list args; \
1863 int r; \
1864 \
1865 va_start(args, fmt); \
1866 \
1867 vaf.fmt = fmt; \
1868 vaf.va = &args; \
1869 \
1870 r = __dev_printk(kern_level, dev, &vaf); \
1871 va_end(args); \
1872 \
1873 return r; \
1874} \
1875EXPORT_SYMBOL(func);
1876
1877define_dev_printk_level(dev_emerg, KERN_EMERG);
1878define_dev_printk_level(dev_alert, KERN_ALERT);
1879define_dev_printk_level(dev_crit, KERN_CRIT);
1880define_dev_printk_level(dev_err, KERN_ERR);
1881define_dev_printk_level(dev_warn, KERN_WARNING);
1882define_dev_printk_level(dev_notice, KERN_NOTICE);
1883define_dev_printk_level(_dev_info, KERN_INFO);
1884
1885#endif