在调试内核时,dev _*()系列函数如何有用?

Nov*_*ice 5 c linux linux-kernel

在搜索调试Linux内核的技术时,其中一种方法是使用dev _*()系列函数.这些函数在/include/linux/device.h文件中定义.
功能列表如下:
pr_emerge()
pr_alert()
pr_crit()
syslog
dmesg
/include/linux/device.h
pr_emerge()

我已经尝试了PR _*() [ pr_alert(),pr_crit(),syslog...]家庭功能,这是类似的printk()以某种方式.使用简单的内核模块完成实验,我正在调用这些函数.此外,我还经历了显示在dmesg/include/linux/device.h(内核环缓冲区取决于console_loglevel-内核变量)中显示的消息的优先级.

但我无法理解dev _*()系列的使用.我的意思是如何在程序中使用它来调试内核功能.
谁可以帮我这个事??

CL.*_*CL. 6

这些pr_*()函数与plain相同printk(),但KERN_xxx已包含日志级别.

dev_*()功能是相同的相应的pr_*()功能,而且还识别打印有关的信息struct device.

如果您的消息与某些设备有关(驱动程序通常就是这种情况),您应该使用dev_*().例如,在USB驱动程序中:

struct usb_device *usb_dev;
dev_info(&usb_dev->dev, "hello\n");

struct usb_interface *usb_intf;
dev_info(&usb_intf->dev, "hello\n");
Run Code Online (Sandbox Code Playgroud)

或在PCI驱动程序中:

struct pci_dev *pci;
dev_info(&pci->dev, "hello\n");
Run Code Online (Sandbox Code Playgroud)