dev_err()
是Linux內(nèi)核中的一個(gè)宏,用于記錄設(shè)備驅(qū)動(dòng)程序中的錯(cuò)誤。它通常被用來(lái)輸出與設(shè)備相關(guān)的錯(cuò)誤信息到系統(tǒng)日志中。dev_err()
宏的參數(shù)如下:
fmt
: 格式化字符串,類(lèi)似于C語(yǔ)言中的printf()
函數(shù)的格式化字符串。它包含了要輸出的錯(cuò)誤信息的格式。...
: 可變參數(shù)列表,包含了與格式化字符串相對(duì)應(yīng)的實(shí)際參數(shù)。這些參數(shù)可以是整數(shù)、指針或其他類(lèi)型的數(shù)據(jù)。dev_err()
宏的實(shí)現(xiàn)可能會(huì)因內(nèi)核版本和具體的設(shè)備驅(qū)動(dòng)程序而有所不同,但一般來(lái)說(shuō),它的基本用法如下:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
static struct device my_device = {
.name = "my_device",
};
static int __init my_driver_init(void) {
printk(KERN_ERR "my_device: Failed to initialize device\n");
return -ENOMEM;
}
static void __exit my_driver_exit(void) {
printk(KERN_ERR "my_device: Device unloaded\n");
}
static struct driver my_driver = {
.name = "my_driver",
.init = my_driver_init,
.exit = my_driver_exit,
};
module_driver(my_driver, device_register, device_unregister);
在這個(gè)例子中,my_driver_init()
函數(shù)在設(shè)備驅(qū)動(dòng)程序初始化失敗時(shí)調(diào)用了`